链接和路由问题

时间:2012-12-04 17:34:22

标签: php cakephp url-routing

在我看来,我有以下链接:

<?php echo $this->Html->link($article['Article']['title'],  array('category' => $article['Page']['Category']['directory'], 'page' => $article['Article']['page_id'],  $article['Article']['id'])); ?>

我希望输出的链接: http://example.com/shows/3/articles/6

我的路线如下:

Router::connect(
    '/:category/:page/:controller/:id',
    array('action' => 'view'),
    array(
        'pass' => array('id'),
        'page' => '[0-9]+',
        'id' => '[0-9]+',
         'category' => 'shows|music|games|books|hobbies',
    )
);

相反,我的链接会像这样返回: http://example.com/articles/6/category:shows/page:3

如何在不使用绝对URL的情况下正确显示?这是我的路由,视图,链接HTML帮助程序或3的组合的问题?我认为问题在于链接帮助程序如何解析URL,但我不确定如何更改它。

如果我手动在我的浏览器中输入网址http://example.com/shows/3/articles/16,则会显示正确的页面。

我查看了命名参数,但这似乎没有达到我想要的效果。

1 个答案:

答案 0 :(得分:0)

您需要在pass中包含所有参数。

所以你的路线看起来应该是,

Router::connect(
    '/:category/:page/:controller/:id',
    array('action' => 'view'),
    array(
        'pass' => array('category','page','id'), // added all passed params here
        'category' => 'shows|music|games|books|hobbies'
        'page' => '[0-9]+',
        'id' => '[0-9]+'
        // Just re-ordered to match your route ;)
    )
);