我正在尝试在CakePHP 3中生成一个路由。我有一个名为ContractsController
的控制器,其中有一个操作details($id)
。
我想将details($id)
操作映射到:
/api/contracts/details/id.json
我已经达到了以下(在routes.php
中):
Router::scope('/api', function ($routes) {
$routes->extensions(['json']);
$routes->resources('Contracts', [
'map' => [
'details' => [
'action' => 'details',
'method' => 'GET'
]
]
]);
});
这使我可以通过/api/contracts/details.json
访问details
操作,但我不知道如何用它传递id。
最后,我用以下方法解决了这个问题:
Router::scope('/api', function ($routes) {
$routes->extensions(['json']);
$routes->resources('Contracts', [
'map' => [
'details/:id' => [
'action' => 'details',
'method' => 'GET'
]
]
]);
});
我会这样做:
Router::scope('/api', function ($routes) {
$routes->extensions(['json']);
$routes->resources('Contracts', [
'map' => [
'details' => [
'action' => 'details',
'id' => '[0-9]+',
'method' => 'GET'
]
]
]);
});
如果这不起作用,请告诉我,我会进行快速测试。