首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(api)资源组路由

(api)资源组路由
EN

Stack Overflow用户
提问于 2018-04-20 02:42:49
回答 2查看 796关注 0票数 0

在对通过资源的路由进行分组时:

代码语言:javascript
复制
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命令输出:

代码语言:javascript
复制
DELETE    | api/v1/books/{book}/catalog/{catalog}
PUT|PATCH | api/v1/books/{book}/catalog/{catalog}

然而,我希望:

代码语言:javascript
复制
DELETE    | api/v1/books/{book}/catalog
PUT|PATCH | api/v1/books/{book}/catalog

有什么建议可以在分组时获得结果,而不需要在DELETE和PUT|PATCH路由中使用额外的{catalog}参数?

EN

回答 2

Stack Overflow用户

发布于 2018-04-20 02:56:55

为什么不直接使用apiResource方法呢?这让一切变得更整洁了。

代码语言:javascript
复制
Route::apiResource('catalog', 'CatalogController');
票数 0
EN

Stack Overflow用户

发布于 2018-04-20 05:19:18

我假设图书和目录之间存在一对一的关系,这就是为什么您不需要使用catalog参数来确定要删除/更新哪个目录。

如果是这种情况,那么您要寻找的是单一资源路由。默认情况下,Laravel不提供此功能。

我已经创建了一个包,将此功能添加到Laravel:shiftonelabs/laravel-singular-resource-routes

但是,您需要进行的一项更改是将index路由更改为show路由。根据定义,单一资源是单一的,因此没有一组资源可供index使用,只有一个资源可供show使用。

安装该软件包后,您将更新路由以包含'singular' => true选项(并更改您的index路由):

代码语言:javascript
复制
Route::resource('books/{book}/catalog', 'CatalogController', [
    'names' => [
        'show' => 'catalog.show',
        'store' => 'catalog.store',
        'update' => 'catalog.update',
        'destroy' => 'catalog.destroy',
    ],
    'except' => ['create', 'edit'],
    'singular' => true,
]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49928101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档