在通过资源分组路线时:
Route::resource('books/{book}/catalog', 'CatalogController', ['names' => [
'index' => 'catalog.index',
'store' => 'catalog.store',
'update' => 'catalog.update',
'destroy' => 'catalog.destroy',
], 'except' => ['create', 'edit', 'show']]);
route:list命令输出:
DELETE | api/v1/books/{book}/catalog/{catalog}
PUT|PATCH | api/v1/books/{book}/catalog/{catalog}
但是我希望:
DELETE | api/v1/books/{book}/catalog
PUT|PATCH | api/v1/books/{book}/catalog
在分组时如何获得结果的任何建议,在DELETE和PUT | PATCH路由中没有额外的{catalog}参数?
答案 0 :(得分:0)
为什么你不只是使用apiResource方法? 它使它变得如此整洁。
Route::apiResource('catalog', 'CatalogController');
答案 1 :(得分:0)
我假设书籍和目录之间存在一对一的关系,这就是为什么您不需要catalog参数来确定要删除/更新的目录。
如果是这种情况,您正在寻找的是单一资源路由。 Laravel默认不提供此功能。
我创建了一个将此功能添加到Laravel的包:shiftonelabs/laravel-singular-resource-routes。
但是,您需要进行一项更改,即将index
路由更改为show
路由。根据定义,奇异资源是单数的,因此index
没有一组资源,show
只有一个资源。
安装软件包后,您需要更新路由以包含'singular' => true
选项(并更改index
路由):
Route::resource('books/{book}/catalog', 'CatalogController', [
'names' => [
'show' => 'catalog.show',
'store' => 'catalog.store',
'update' => 'catalog.update',
'destroy' => 'catalog.destroy',
],
'except' => ['create', 'edit'],
'singular' => true,
]);