在对通过资源的路由进行分组时:
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}参数?
发布于 2018-04-20 02:56:55
为什么不直接使用apiResource方法呢?这让一切变得更整洁了。
Route::apiResource('catalog', 'CatalogController');发布于 2018-04-20 05:19:18
我假设图书和目录之间存在一对一的关系,这就是为什么您不需要使用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,
]);https://stackoverflow.com/questions/49928101
复制相似问题