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/: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'
            ]
        ]
    ]);
});

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