如何在Laravel中更改嵌套资源路由的名称?

问题描述 投票:0回答:1

我的问题是当我改变一个资源名称时,像这样:

Route::resource('photos', 'Photos\PhotoController')->parameters(['photo' => 'photo_id']);

它能正常工作, 默认的 "photo "参数名改为 "photo_id". 但是当我使用嵌套资源路由时,像这样:

Route::resource('photos.captions', 'Photos\PhotoController')->parameters(['photo' => 'photo_id', 'caption' => 'caption_id']);

"caption "的参数名并没有改成 "caption_id"。

有什么办法可以同时改变这两个参数吗?谢谢:)

php laravel parameters routes resources
1个回答
0
投票

以下应该可以工作。

Route::resource('photos.captions', 'Photos\PhotoController')
    ->parameters(['photos' => 'photo_id', 'captions' => 'caption_id']);

资源名和参数名必须匹配。

  • resource: photos,参数名必须匹配: resource:, parameter: photos
  • 资源: ,参数: ,资源: 。captions,参数: resource:, parameter: captions

文件:

默认情况下,Route::resource 将根据资源名称的 "单数 "版本为资源路由创建路由参数。您可以通过使用参数方法轻松地覆盖每个资源的参数。传入参数方法的数组应该是资源名和参数名的关联数组。

Route::resource('users', 'AdminUserController')->parameters([
    'users' => 'admin_user'
]);

上面的例子为资源的show route生成了以下URI。

/users/{admin_user}
© www.soinside.com 2019 - 2024. All rights reserved.