参数以字段名称而不是值的形式进入数组

时间:2019-04-29 12:55:35

标签: php laravel

我要达到什么目的?

我有“任务”,每个任务可以有多个“注释”,因此,当您选择一个任务并单击注释时,它将带您到包含单击任务的所有注释的页面。

每个笔记都有一个名为“ task_id”的字段,所以我的问题是将此task_id传递给笔记。

我正尝试在便签表格上通过以下方式:

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

它进入我的控制器

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');
     */
}

但是我将其退回以查看进展如何,并且得到了:

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

最后的8实际上是正确的任务ID,但它显示为名称而不是值。 可能是什么原因造成的?

这是我的表单视图:

@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>

这些是我的路线:

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');

1 个答案:

答案 0 :(得分:1)

您正在尝试将task_id作为路由参数传递,但是您的notes.store路由没有路由参数。

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

task_id添加为隐藏输入应正确发送请求:

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