我在CakePHP中遇到路由问题。我想将参数传递给路由,但此参数需要具有默认值。 我的路线:
$routes->connect('/exchangeOffer/add/:type', ['controller' => 'Offer', 'action' => 'add'], ['pass' => ['type'], 'type' => '(NORMAL|AUTO)']);
当我去其中一个地址时,这条路线不会起作用:
但我希望它能与地址一起使用
然后将默认类型参数传递为NORMAL 我知道这样的东西在Zend Framework中是可行的,但我在CakePHP中是全新的,并且无法找到一种方法来做到这一点(通过许多帖子和答案,不仅在这里,而且没有他们帮了。)
答案 0 :(得分:1)
如果要在路由级别解决此问题,那么您必须添加一个没有:type
路由元素集的附加路由,并在默认数组中传递一个默认的type
参数,像
$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'
]
);
另见
答案 1 :(得分:0)
如果您不需要操作,只需输入Controller,cakephp将在控制器中选择默认操作(它将是索引) 例如:
Router::connect(
'/add/*', array('controller' => 'users','action' => 'index' )
);
当你去http://domain.com/add/some-thing.html或http://domain.com/add时,系统会调用控制器USERS和action INDEX
希望对你有帮助