URL Laravel 中的动作生成器 6.x

URL action generator in Laravel 6.x

我更新到 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(大概吧,我想)让动作 url 生成器更严格一点,如果你要命名参数(即 'id'=> 0),那么你必须确保名称与路由定义中参数的名称完全匹配。

您可以通过使用 php artisan route:list 并查找您尝试 post 到达的路线来找到所需参数的名称。在这种情况下,我怀疑它应该是 '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 生成器假定第一个参数满足生成路由所需的参数。