在我的 routes.php 中,我有:
Route::patch('/preferences/{id}', 'UserController@update');
在视图文件(account/preferences.blade.php)中我有:
{!! Form::model(Auth::user(), ['method' => 'PATCH', 'route' => '/preferences/' . Auth::user()->id]) !!}
但我收到了这个错误:
路线 [/preferences/1] 未定义
直接调用 route()
助手时会出现类似的错误:
route('/preferences/' . Auth::user()->id');
我想我误解了关于这个主题的文档,但我已经为带有给定参数的 PATCH 请求定义了一个路由,并在视图中正确设置了它。我在这里俯瞰什么?
原文由 Ben Fransen 发布,翻译遵循 CC BY-SA 4.0 许可协议
route()
方法,当您在表单打开时调用['route' => 'someroute']
需要所谓的 _命名路由_。你给一个路线起这样的名字:也就是说,您将路由的第二个参数放入一个数组中,在其中指定路由名称(
as
),以及当路由被命中时要做什么(uses
)。然后,当您打开表单时,您调用路由:
现在,对于没有参数的路由,您可以只做
'route' => 'routename'
,但是由于您有一个参数,所以您可以创建一个数组并按顺序提供参数。综上所述,由于您似乎正在更新当前用户的首选项,我建议您让处理控制器检查当前登录用户的 id,并以此为基础进行更新 - 无需发送 id在 url 和路由中,除非您的用户也需要更新其他用户的首选项。 :)