我有点搞不清楚这是怎么回事.但我有Route [/preferences/1] not defined个错误.

在我的路由上.我有:

Route::patch('/preferences/{id}', 'UserController@update');

在视图文件(account/preferences.blade.php)中,我有:

{!! Form::model(Auth::user(), ['method' => 'PATCH', 'route' => '/preferences/' . Auth::user()->id]) !!}

我得到一个错误,告诉我路由不存在.我想我误解了关于这个主题的文档,但在我看来,我已经用给定的参数为补丁请求定义了一个路由,并在视图中正确设置了它.

我在这里忽略了什么?

推荐答案

route()方法是在窗体打开时执行['route' => 'someroute']时调用的,它需要的是所谓的named route.您可以为路由命名,如下所示:

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

也就是说,您将路由的第二个参数放入一个数组中,其中既指定了路由名称(as),也指定了当路由命中时要执行的操作(uses).

然后,当你打开表单时,你调用路由:

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

现在,对于没有参数的路由,您可以只做'route' => 'routename',但是因为您有一个参数,所以您可以改为制作一个数组并按顺序提供参数.

总而言之,既然您似乎正在更新当前用户的首选项,我建议您让处理控制器判断当前登录用户的id,并基于此进行更新除非您的用户也需要更新其他用户的首选项,否则无需发送url和路由中的id.:)

Php相关问答推荐

提交表格后的重定向不起作用

try 修改这个PHP代码如果语句在WordPress""

如何使用PHP停止foreach循环中的重复项?

从WooCommerce邮箱通知中的订单详细信息中删除产品列表

在WooCommerce产品档案页面中显示产品销售百分比

从产品中获取WooCommerce产品属性单选按钮的列表WP_Query

如何使用`preg_replace`删除重复的空格字符

在WooCommerce我的帐户部分添加带有自定义链接的自定义菜单项

PHP-带POST验证的for循环

筛选器具有多个查询之一

如何不重新查询模型A-&>;相关模型B-&>模型

创建一个Woocommerce我的帐户订单页面,仅显示已完成的订单

Regex:高级删除单行PHP注释

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

Shopware 6 插件:如何删除/迁移布尔配置到多选配置

通过添加计数器修改文本区域表单中的重复值

simplexml_load_file 和 simplexml_load_string 返回具有不同编码的相同数据

在WooCommerce中显示 checkout 的高级自定义字段(Advanced Custom Fields)并保存其值

Symfony 在将它传递给 Twig 时是否从数据库中获取整个对象?

图像不会显示在生产中的 Laravel 应用程序中