【发布时间】:2012-10-13 15:52:07
【问题描述】:
我有一个与this question 相关的新问题,但由于这些问题根本不匹配,我正在创建这个新主题。但它是一个很好的参考。
我改变了对logs 到log 的想法,logs 很好。但是我有另一个名为WikisController 的控制器,在这种情况下,我真的很想更改 URL。我只是讨厌 URL 将是 example.com/wikis/subject.html,我希望它是 example.com/wiki/subject.html。它更干净,并且该约定现在与其他也称为wiki 而不是wikis 的站点100% 匹配。但是,由于CakePHP 约定,我希望控制器被称为WikisController。
好吧,现在真正的问题来了。我目前在Config/routes.php中使用以下路由:
Router::connect('/wiki/:action/*', array('controller' => 'wikis'));
Router::connect('/wiki/*', array('controller' => 'wikis'));
这是other topic 中的解决方案使用的一段代码。但现在我遇到了一点麻烦。好吧,这并不是一个大问题,因为一切正常。但我不喜欢这个网址。
当我从example.com/wiki/edit.html 创建如下链接时:
echo $this->Html->link('Wiki overview', array(
'controller' => 'wikis',
'action' => 'index',
'ext' => 'html'
));
它正在创建一个指向example.com/wiki/index.html 的链接,它完全可以正常工作,但我不想显示index.html,我只是不想。它是url中的一个额外的词,用户不需要知道他在哪里。
我正在使用controller 和action 键创建link,因为我之前遇到了一个小错误。当我没有指定action 时,它会创建一个指向example.com/edit.html 的链接,这显然是我不想要的。所以我必须将action => index 键添加到数组中。我不确定这是否是一个真正的错误,但这不重要。 Index = index 没有任何改变。我确信我的 URL 指向正确的页面是一件好事,因此添加 action 对我来说不是问题。
仅供参考:
当我以与上面完全相同的方式从页面example.com/flights/add.html 创建到example.com/flights/index.html 的链接时,它会从url 中删除/index 部分,并简单地创建一个指向example.com/flights.html 的url,即干净得多。
所以它必须与路由有关,但我不知道是什么。
【问题讨论】: