如何在CakePhp中设置自定义URL

时间:2011-07-30 07:16:43

标签: php cakephp routes

我想定义如下的网址:

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

提前致谢,

布赖恩

1 个答案:

答案 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')
   )
);