CakePHP自定义休息路由

时间:2015-01-13 06:11:19

标签: rest cakephp cakephp-routing

我们的路由器在控制器和操作定义之前定义了一个自定义参数:

Router::connect(
    '/:store/:controller/:action/*',
    array(),
    array(
       'store' => 'shop\/[^\/]+'
    )
);

Router::mapResources('Invoices');
Router::parseExtensions();

它匹配前缀为'/ shop / x'的请求,其中x是id:

http://host.com/shop/1/invoices/view/1  

但是,上述定义不能正确地路由REST请求:

http://host.com/shop/1/invoices/1.json  (doesn't work)

作为一种解决方法,它通过传递操作(但不适用于REST)来工作:

http://host.com/shop/1/invoices/view/1.json

关于如何使休息路线有效的任何想法?

1 个答案:

答案 0 :(得分:3)

有一个特殊键可用于连接功能的第三个参数。

pass用于定义应将哪个路由参数移入传递数组。添加要传递的参数会将其从常规路径数组中删除。防爆。 'pass'=>阵列( 'ID')

Router::connect(
    '/:store/:controller/:id',
    array('[method]'=>'GET', 'action'=>'view'),
    array(
       'store' => 'shop\/[^\/]+',
       'id' => '[0-9]+',
       'pass' => array('id')
    )
);

从CakePHP路由文档中找到解决方案。