我正在尝试连接CakePHP 3中的嵌套路由。
我正在尝试实现以下路线(括号中的当前状态):
GET /api/users/:id/events (Working)
POST /api/users/:id/events (Missing Route)
GET /api/events/:id (Working)
PATCH /api/events/:id (Missing Route)
DELETE /api/events/:id (Not tested)
在我的routes.php文件中,我有以下内容:
Router::prefix('api', function ($routes) {
$routes->connect('/token', ['controller' => 'Users', 'action' => 'token']);
$routes->resources('Users', function ($routes) {
$routes->resources('Events', [
'only' => ['index', 'add']
]);
});
$routes->resources('Events', [
'only' => ['view', 'patch', 'delete']
]);
});
无效的路线会引发Cake\Routing\Exception\MissingRouteException
错误页面还会显示已连接路由的列表,而我想要的路由不存在。是否可以按照我尝试过的方式创建嵌套资源,或者如何在不手动连接每个路径的情况下连接所需的路由?
答案 0 :(得分:1)
再次仔细查看文档,add
选项不支持patch
或only
值,除非您添加带有这些名称的自定义路由默认资源图。
默认情况下,仅支持以下资源路由:
index
(= GET
)view
(= GET
与/:id
)create
(= POST
)update
(= PUT
和PATCH
/:id
)delete
(= DELETE
与/:id
)因此,对于嵌套的index
资源路由,您要使用create
和Users/Events
,view
,update
和delete
对于非嵌套的Events
资源路由。
另见