我的问题是关于当我像这样更改资源名称时:
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”。
有什么办法可以让他们两个都改变吗? 谢谢:)
以下应能起作用:
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}