Jesus
Jesus

Reputation: 117

Parameter goes into array as the name of the field instead of the value

What am I trying to achieve?

I have "tasks" and each task can have multiple "notes", so when you select a Task and click notes, it takes you to a page with all the notes for the task in which you clicked.

Each note has a field called "task_id", so my problem is passing this task_id to the note.

I'm trying to pass it like this on the notes form:

<form method="POST" action="{{route('notes.store',$task)}}">
    @include('notes.form')
</form>

And it goes into my controller

public function store(Request $r)
{           
    $validatedData = $r->validate([
        'note' => 'required',
    ]);

    $r['created_by'] = Auth::user()->user_id;

    return $r;
    /*
     $note = Note::create($r->all());
     return redirect('/notes')->with('store');
     */
}

But I return it to see how its going and I get this:

{"_token":"OmGrbYeQDl35oRnmewrVraCT0SHMC16wE4gD56nl","note":"363","created_by":4,"8":null}

That 8 at the end is actually the correct task id, but it appears as the name instead of the value. What may be causing this?

This is my form view:

@csrf
<div class="col">
    <div class="form-group">
        <input type="text" class="form-control" name="note">
    </div>
</div>

<div class="col-10">
    <div class="form-group">
        <button class="btn btn-success" type="submit">Add note</button>
        <br><br>
    </div>
</div>

These are my routes:

Route::get('/tasks/{task}/notes', ['as' => 'tasks.notes', 'uses' => 'NoteController@index']);
Route::get('/projects/{project}/tasks', ['as' => 'projects.tasks', 'uses' => 'ProjectController@seeTasks']);


Route::get('/projects/results','ProjectController@filter'); 
Route::get('/tasks/results','TaskController@filter');
Route::resource('projects','ProjectController');
Route::resource('clients','ClientController');
Route::resource('tasks','TaskController');
Route::resource('users','UserController');
Route::resource('notes','NoteController');

Upvotes: 0

Views: 61

Answers (1)

Remul
Remul

Reputation: 8252

You are trying to pass the task_id as a route parameter, but your notes.store route has no route parameters.

Verb        Path        Action        Route Name
POST        /notes      store         notes.store

Adding the task_id as a hidden input should properly send it with the request:

<form method="POST" action="{{ route('notes.store') }}">
    <input type="hidden" name="task_id" value="{{ $task->id }}">
    @include('notes.form')
</form>

Upvotes: 1

Related Questions