1

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

<?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 Helper 还是这 3 个组合的问题?我认为问题在于链接帮助程序如何解析 URL,但我不确定如何更改它。

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

我查看了命名参数,但这似乎也没有完成我想要的。

4

1 回答 1

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 ;)
    )
);
于 2013-01-16T10:25:00.290 回答