Laravel 5 MethodNotAllowedHttpException PUT

时间:2016-02-16 11:41:04

标签: php laravel methods laravel-5

我正在尝试更新用户,但是当我点击提交按钮时,Laravel会抛出以下错误:

  在RouteCollection.php第206行“

”RouteCollection-> methodNotAllowed(array('GET','HEAD','POST'))。

我认为不允许PUT方法,但我不明白其中的原因。请求永远不会达到UserController@update

我已经配置了这样的资源路径:

Route::resource('backend/users', 'Backend\UsersController');

php artisan route:list的输出是:

output of php artisan route:list

3 个答案:

答案 0 :(得分:4)

我解决了这样的问题:它必须是表单的帖子操作错误;

<form method="POST" action="10.241.229.1/backend/users/{{$user->id}}"; accept-charset="UTF-8">

将要更新的ID添加到操作中。

enter image description here

答案 1 :(得分:1)

在表单中使用这样的put方法,以获得更多https://laravel.com/docs/5.2/routing#form-method-spoofing

{{ method_field('PUT') }}

答案 2 :(得分:0)

这个问题迟了一点。

根据我的经验,这种错误有两个原因:

  1. 正如Laravel docs所述,HTML表单不支持PUTPATCHDELETE操作。因此,在定义从HTML表单调用的PUTPATCHDELETE路由时,您需要向表单添加隐藏的_method字段。

  2. 如果您是从HTML表单发出请求,并且启用了VerifyCsrfToken中间件,则需要向{{1}的表单添加隐藏的_token字段作为价值。