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 生成器假定第一个参数满足生成路由所需的参数。
我更新到 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 生成器假定第一个参数满足生成路由所需的参数。