在我看来,我有以下链接:
<?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,则会显示正确的页面。
我查看了命名参数,但这似乎没有达到我想要的效果。
答案 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 ;)
)
);