laravel - Laravel 6.x 中的 URL 操作生成器

标签 laravel laravel-6

更新到 Laravel 6.4 后,我收到了一个非常奇怪的错误。我错过了什么吗?

不起作用

{{ action('Admin\OfferController@post', ['id'=>$offer->offer_id,'post'=>0]) }}

有效

{{ action('Admin\OfferController@post', [$offer->offer_id, 0]) }}

错误

Missing required parameters for [Route: offers.edit]

最佳答案

Laravel 6.3(大概吧,我认为)使 Action url 生成器更加严格,如果你正在命名参数(即 'id'=> 0)那么你必须确保该名称与路由定义中参数的名称完全匹配。

您可以使用 php artisan route:list 并查找您尝试发布到的路由来找到所需参数的名称。在这种情况下,我怀疑它应该是 'offer' => $offer->offer_id 而不是 'id' => $offer->offer_id 但只有当你生成使用 route::resource 方法的路由。

例如。在我目前正在开发的应用程序中,我有以下内容

Route::resource('/articles', 'ArticlesController');

生成以下用于更新文章的路由

PUT /articles/{article}

所以要使用操作 URL 生成器,我必须执行以下操作

action('ArticlesController@update', ['article' => $article->id])

第二个示例起作用的原因是,如果您没有告诉它第一个变量的名称,URL 生成器会假定第一个参数满足生成路由所需的参数。

关于laravel - Laravel 6.x 中的 URL 操作生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59107698/

相关文章:

php - Laravel 6 - CSS 文件传输到公共(public)文件夹

laravel - 重定向不适用于自定义中间件

javascript - 如何根据页面的 URL 更改元素的类

php - 无法在 laravel 8 上安装 laravel/jetstream

Laravel 6.x - 缓存 'pagination()'

laravel - 无法在 Laravel Dusk 中使用正确的环境数据库

routes - 如何检测用户是否正在访问其根路由下的 uri (/root_route ->/root_route/uri)

javascript - 数据库中的行不比较 Ajax、Jquery

php - Nginx - Laravel - LEMP - 访问除/以外的任何页面时出现 403 Forbidden 错误

php - 将计算列添加到 Laravel Eloquent 模型并对该列进行排序和/或过滤