2

我有一个与这个问题相关的新问题,但由于这些问题根本不匹配,我正在创建这个新主题。但它是一个很好的参考。


我改变了主意logs,这log很好logs。但是我有另一个名为 的控制器WikisController,在这种情况下,我真的很想更改 URL。我只是讨厌 URL 将是example.com/wikis/subject.html,我希望它是example.com/wiki/subject.html。它更干净,并且该约定现在与其他也称为 的站点 100% 匹配wiki,而不是wikisWikisController但是,由于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 中的一个额外词,用户不需要了解他在哪里。

由于我之前遇到的一个小错误,我正在使用linkandcontroller键创建。action当我没有指定 时action,它显然会创建一个example.com/edit.html我不想要的链接。所以我必须将action => index密钥添加到数组中。我不确定这是否是一个真正的错误,但这不重要。Index = index没有任何改变。我确信我的 URL 指向正确的页面是一件好事,因此添加action对我来说不是问题。

只是为了注意:

当我以与上面完全相同的方式example.com/flights/index.html从页面创建链接时,它会从 urlexample.com/flights/add.html中删除该部分,并简单地创建一个更清晰的 url。/indexexample.com/flights.html

所以它必须与路由有关,但我不知道是什么。

4

1 回答 1

1

如果我理解正确,那么您将需要一条连接/wiki到控制器index操作的路由:

Router::connect('/wiki', array('controller' => 'wikis', 'action' => 'index'));
Router::connect('/wiki/:action/*', array('controller' => 'wikis'));
...
于 2012-10-13T18:39:10.327 回答