我的问题是当我改变一个资源名称时,像这样:
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
,参数名必须匹配: resource:, parameter: photos
captions
,参数: resource:, parameter: captions
从 文件:
默认情况下,Route::resource 将根据资源名称的 "单数 "版本为资源路由创建路由参数。您可以通过使用参数方法轻松地覆盖每个资源的参数。传入参数方法的数组应该是资源名和参数名的关联数组。
Route::resource('users', 'AdminUserController')->parameters([
'users' => 'admin_user'
]);
上面的例子为资源的show route生成了以下URI。
/users/{admin_user}