CakePHP 3.0 - 将参数传递给映射的 RESTful 资源

CakePHP 3.0 - Pass parameters to mapped RESTful resource

我正在尝试在 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' => [
                'action' => 'details',
                'id' => '[0-9]+',
                'method' => 'GET'
            ]
        ]
    ]);
});

如果这不起作用,请告诉我,我会运行 进行快速测试。

最后我用以下方法解决了这个问题:

Router::scope('/api', function ($routes) {
    $routes->extensions(['json']);
    $routes->resources('Contracts', [
        'map' => [
            'details/:id' => [
                'action' => 'details',
                'method' => 'GET'
            ]
        ]
    ]);
});