2016-03-25 155 views
0

我在CakePHP中有路由问题。我想将参数传递给路由,但此参数需要具有默认值。 我的路线:CakePHP默认路由参数

$routes->connect('/exchangeOffer/add/:type', ['controller' => 'Offer', 'action' => 'add'], ['pass' => ['type'], 'type' => '(NORMAL|AUTO)']); 

这条路线的作品onnly当我去到一个地址:

http://domain/exchangeOffer/add/NORMAL

http://domain/exchangeOffer/add/AUTO

但我想它与地址

工作

http://domain/exchangeOffer/add

再经过默认类型参数正常。我知道这样的东西在Zend Framework中是可行的,但我在CakePHP中是全新的,并且找不到这样做的方式(查看了很多帖子和答案,不仅在这里,而且都没有帮助)。

回答

1

如果你想在路由层面解决这个问题,那么你就必须用无:type路由元素集添加额外的路径,默认type PARAM默认数组中过去了,就像

$routes->connect(
    '/exchangeOffer/add/:type', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add' 
    ], 
    [ 
     'pass' => ['type'], 
     'type' => '(NORMAL|AUTO)' 
    ] 
); 

$routes->connect(
    '/exchangeOffer/add', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add', 
     'type' => 'NORMAL' 
    ], 
    [ 
     'pass' => ['type'] 
    ] 
); 

如果你希望能够在不定义类型生成URL(例如通过Router::url()),你必须添加(附加 - 如订单事宜)第三规则没有被类型在所有涉及

$routes->connect(
    '/exchangeOffer/add', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add' 
    ] 
); 

请参阅也

0

如果您不需要的动作,你只需输入控制器,CakePHP会选择控制器的默认操作(这将是指数) 例如:

Router::connect(
    '/add/*', array('controller' => 'users','action' => 'index') 
); 

你什么时候去http://domain.com/add/some-thing.htmlhttp://domain.com/add,系统会调用控制器USERS和动作INDEX

希望它能帮到你