我有一个与这个问题相关的新问题,但由于问题根本不匹配,我正在创建这个新主题。但它是作为很好的参考。
我改变了对logs
的想法,log
的事情,logs
很好。但是我有另一个叫做WikisController
的控制器,在这种情况下,我真的很想更改 URL。我只是讨厌URL会被example.com/wikis/subject.html
,我希望它是example.com/wiki/subject.html
的。它更干净,该约定现在与其他站点 100% 匹配,也称为wiki
,而不是wikis
.但是,我希望控制器被称为WikisController
,因为CakePHP
约定。
好吧,现在真正的问题来了。我目前正在Config/routes.php
使用以下路由:
Router::connect('/wiki/:action/*', array('controller' => 'wikis'));
Router::connect('/wiki/*', array('controller' => 'wikis'));
这是其他主题中的解决方案使用的代码段。但现在我遇到了一点麻烦。好吧,这不是一个大问题,因为一切都很好。但我不喜欢这个网址。
当我从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/index.html
时example.com/flights/add.html
它会从 url 中删除/index
部分,只需创建一个 url 即可example.com/flights.html
这更干净。
所以它必须与路由有关,但我无法弄清楚是什么。
如果我理解正确,那么您将需要一条将/wiki
连接到控制器index
操作的路由:
Router::connect('/wiki', array('controller' => 'wikis', 'action' => 'index'));
Router::connect('/wiki/:action/*', array('controller' => 'wikis'));
...