我正在尝试更新用户,但是当我点击提交按钮时,Laravel会抛出以下错误:
在RouteCollection.php第206行“”RouteCollection-> methodNotAllowed(array('GET','HEAD','POST'))。
我认为不允许PUT
方法,但我不明白其中的原因。请求永远不会达到UserController@update
。
我已经配置了这样的资源路径:
Route::resource('backend/users', 'Backend\UsersController');
php artisan route:list
的输出是:
答案 0 :(得分:4)
我解决了这样的问题:它必须是表单的帖子操作错误;
<form method="POST" action="10.241.229.1/backend/users/{{$user->id}}"; accept-charset="UTF-8">
将要更新的ID添加到操作中。
答案 1 :(得分:1)
在表单中使用这样的put方法,以获得更多https://laravel.com/docs/5.2/routing#form-method-spoofing
{{ method_field('PUT') }}
答案 2 :(得分:0)
这个问题迟了一点。
根据我的经验,这种错误有两个原因:
正如Laravel docs所述,HTML表单不支持PUT
,PATCH
或DELETE
操作。因此,在定义从HTML表单调用的PUT
,PATCH
或DELETE
路由时,您需要向表单添加隐藏的_method
字段。
如果您是从HTML表单发出请求,并且启用了VerifyCsrfToken
中间件,则需要向{{1}的表单添加隐藏的_token
字段作为价值。