【问题标题】:CakePHP Custom Rest RoutingCakePHP 自定义 Rest 路由
【发布时间】:2015-01-13 15:40:14
【问题描述】:

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

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

关于如何使休息路线发挥作用的任何想法?

【问题讨论】:

    标签: rest cakephp cakephp-routing


    【解决方案1】:

    连接函数的第三个参数有一个特殊的键。

    pass 用于定义应将哪些路由参数移入 pass 数组。添加要传递的参数会将其从常规路由数组中删除。前任。 'pass' => 数组('id')

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 2011-06-29
      • 1970-01-01
      • 2011-04-04
      • 2011-11-24
      • 2012-10-06
      • 1970-01-01
      相关资源
      最近更新 更多