【问题标题】:Route [user.update] not defined路由 [user.update] 未定义
【发布时间】:2017-06-21 16:14:51
【问题描述】:

这两种方法我都试过了..

第一个: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]]) !!}

请说明如何使用路由更新默认授权用户。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.3


    【解决方案1】:

    你应该给路线起个名字:

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

    或者:

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

    【讨论】:

    • 一旦我在 HomeController 的更新函数中删除了 id 参数,它就会进入函数..
    【解决方案2】:

    您的表单方法是补丁,而您的路由方法被列为帖子。 您要么更改路由方法,要么更改表单中的操作。

    【讨论】:

      【解决方案3】:

      我认为您应该具体说明您要使用的方法,无论是 put 还是 patch 如果我没记错的话,如果您必须使用 patch 方法,请参考这篇文章的答案:Laravel form won't PATCH, only POST - nested RESTfull Controllers, MethodNotAllowedHttpException

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

      method 字段是必需的,因为据我了解,Laravel 使用这种机制来处理补丁请求。

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

      【讨论】:

      • 一旦我在 HomeController 的更新函数中删除了 id 参数,它就会进入函数..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2018-08-20
      • 2018-06-30
      • 2019-12-30
      • 2018-12-16
      • 1970-01-01
      相关资源
      最近更新 更多