我对这应该如何工作有点困惑.但我得到一个Route [/ preferences / 1]没有定义错误.
在我的routes.php中,我有:
Route :: patch(‘/ preferences / {id}’,’UserController @ update’);
在视图文件(account / preferences.blade.php)中,我有:
{! Form :: model(Auth :: user(),[‘method’=>’PATCH’,’route’=>’/ preferences /’.Auth :: user() – > id])!!}
我收到错误告诉我路线不存在.我想我误解了关于这个主题的文档,但在我看来,我已经为给定参数的PATCH请求定义了一个路由,并在视图中正确设置了它.
我在这里俯瞰什么?
解决方法:
route()方法,当你做”route’=>时调用’someroute’]在表格开头,想要所谓的命名路线.你给路线一个这样的名字:
Route::patch('/preferences/{id}',[
'as' => 'user.preferences.update',
'uses' => 'UserController@update'
]);
也就是说,您将路径的第二个参数设置为一个数组,您可以在其中指定路径名称(as),以及命中路径时的操作(使用).
然后,当您打开表单时,您将调用该路由:
{!! Form::model(Auth::user(), [
'method' => 'PATCH',
'route' => ['user.preferences.update', Auth::user()->id]
]) !!}
现在,对于没有参数的路线,你可以做’route’=> ‘routename’,但由于你有一个参数,你可以创建一个数组并按顺序提供参数.
所有这一切,因为您似乎正在更新当前用户的首选项,我建议您让处理控制器检查当前登录用户的ID,并将更新基于此 – 不需要发送id在网址和路由中,除非您的用户还需要更新其他用户的首选项.