Route [user.update]未定义

时间:2017-02-04 09:27:24

标签: php laravel laravel-5 laravel-5.3

我尝试了这两种方法..

第一个:MethodNotAllowedHttpException

Route::post('/settings/{id}/update/', 'HomeController@update'); Route::match(['put','patch'], '/settings/{id}/update/','HomeController@update')也使用它..

{!! Form::model($user, ['method' => 'patch','action' => ['HomeController@update',$user->id]]) !!}

另一个

{!! Form::model($user, ['method' => 'patch','route' => ['user.update',$user->id]]) !!}

请说明如何使用路由更新默认身份验证用户。

3 个答案:

答案 0 :(得分:1)

您应该为路线命名:

Route::patch('/settings/{id}/update/', 'HomeController@update')->name('user.update');

或者:

Route::patch('/settings/{id}/update/', ['as' => 'user.update', 'uses' => 'HomeController@update']);

答案 1 :(得分:0)

您的表单方法是补丁,而您的路由方法被列为帖子。 您可以更改路线方法,也可以更改表格中的操作。

答案 2 :(得分:0)

我认为你应该具体说明你想要使用的方法,无论是放入还是补丁,如果我没记错,如果你必须使用补丁方法来引用这篇文章中的答案:Laravel form won't PATCH, only POST - nested RESTfull Controllers, MethodNotAllowedHttpException < / p>

<form method="POST" action="patchlink">
     {!! method_field('patch') !!}
     . . .
</form>

方法字段是必需的,因为据我所知,Laravel使用此机制来处理补丁请求。

  

PS:如果我理解正确的话,我刚试图强调的是,应该有一个额外的字段来处理补丁方法。   希望这会有所帮助:)