Laravel:控制器中的更新方法无效

时间:2017-01-16 13:17:05

标签: laravel

编辑视图中的我的表单:

<form class="form-horizontal" role="form" method="PUT" action="{{ route('locations.update', $location->id) }}">
                        {{ csrf_field() }}
// All form Fields ...
</form>

我遇到这种情况:

| GET|HEAD  | locations/create          | locations.create  | App\Http\Controllers\LocationController@create
| PUT|PATCH | locations/{location}      | locations.update  | App\Http\Controllers\LocationController@update
| GET|HEAD  | locations/{location}      | locations.show    | App\Http\Controllers\LocationController@show
| DELETE    | locations/{location}      | locations.destroy | App\Http\Controllers\LocationController@destroy

位置控制器中的我的更新方法

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
    dd($request);

}

表单提交的结果 enter image description here dd($ request);结果没有显示出来。

我有什么暗示我在这里做错了吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

网络浏览器不支持PUT路由,仅支持GETPOST。要解决此问题,您可以使用Form Method Spoofing向表单添加隐藏字段。像这样:

<form class="form-horizontal" role="form" method="post" action="{{ route('locations.update', $location->id) }}">
    {{ csrf_field() }}
    <input type="hidden" name="_method" value="PUT">

    // All form Fields ...
</form>