使用命名参数时,Router :: url()出现问题

时间:2010-05-11 09:57:20

标签: php cakephp

我通过以下方式与CakePHP的HtmlHelper生成简单的简单链接:

$html->link("Newest", array(
            'controller' => 'posts',
            'action' => 'listView',
            'page'=> 1,
            'sort'=>'Question.created',
            'direction'=>'desc',
    ));

具有以下路线规则:

Router::connect('/foobar/*',array(
        'controller' => 'posts',
        'action' => 'listView'
));

链接很好地生成为/foobar/page:1/sort:Question.created/direction:desc。正如我想的那样,它使用我的URL前缀而不是控制器/动作名称。

但是,对于某些链接,我必须添加如下命名参数:

$html->link("Newest", array(
            'controller' => 'posts',
            'action' => 'listView',
            'page'=> 1,
            'sort'=>'Question.created',
            'direction'=>'desc',
            'namedParameter' => 'namedParameterValue'
    ));

此案例中的链接指向/posts/listView/page:1/sort:Question.created/direction:desc/namedParameter:namedParameterValue。但我不希望在我的URL-s中有控制器/动作名称,为什么Cake在这种情况下忽略了我的路由器配置?

1 个答案:

答案 0 :(得分:2)

相当无证,但是mentioned,这解决了它:

Router::connectNamed(array('namedParameter', 'page', 'sort', 'direction'));