提问者:小点点

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


我的问题是关于当我像这样更改资源名称时:

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”。

有什么办法可以让他们两个都改变吗? 谢谢:)


共1个答案

匿名用户

以下应能起作用:

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

资源名称和参数名称必须匹配:

  • 资源:photos,参数:photos
  • 资源:captions,参数:captions

从文档中:

默认情况下,route::resource将根据资源名称的“奇异化”版本为您的资源路由创建路由参数。 通过使用parameters方法,您可以轻松地在每个资源的基础上重写这一点。 传递给parameters方法的数组应该是资源名称和参数名称的关联数组:

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

上面的示例为资源的show route生成以下URI:

/users/{admin_user}