我想定义如下的网址:
http://localhost/bekzcart/books/list?cid=1&type=grid&page=1
如何为该类型的网址创建自定义路由,我的路由器代码根本不起作用
Router::connect('/books/list?cid=:cid&type=:type&page=:page', array('controller' => 'books', 'action' => 'list'));
参数cid,type和page为空,但是当我改为
时Router::connect('/books/list?:cid&:type&:page', array('controller' => 'books', 'action' => 'list'));
它有效,现在存在参数cid,type和page。
注意:我的蛋糕版本为1.3
提前致谢,
布赖恩
答案 0 :(得分:0)
我认为您不需要这些路线,如果您需要获取这些网址参数,您可以从$this->params['url']['param_name']
如果您希望参数在方法中以$ {param_name}的形式提供,您可以使用pass告诉路由传递这些参数,如下所示:
http://book.cakephp.org/view/949/Passing-parameters-to-action
// some_controller.php
function view($articleID = null, $slug = null) {
// some code here...
}
// routes.php
Router::connect(
// E.g. /blog/3-CakePHP_Rocks
'/blog/:id-:slug',
array('controller' => 'blog', 'action' => 'view'),
array(
// order matters since this will simply map ":id" to $articleID in your action
'pass' => array('id', 'slug'),
'id' => '[0-9]+'
)
);
所以在你的情况下,会是这样的:(未经测试的)
Router::connect('/books/list?cid=:cid&type=:type&page=:page',
array('controller' => 'books', 'action' => 'list'),
array(
'pass' => array('cid', 'type', 'page')
)
);