Cakephp Controller别名不能完全正常工作

时间:2012-10-13 15:52:07

标签: php cakephp

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


我改变了对logslog事物的看法,logs没问题。但我有另一个名为WikisController的控制器,在这种情况下我真的想更改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'));

这是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,我只是不这样做。在网址中这是一个额外的单词,用户无需了解他的位置。

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

只是为了通知:

当我从页面example.com/flights/index.html创建一个与我上面的example.com/flights/add.html完全相同的链接时,它会从网址中删除/index部分,只需创建一个网址到example.com/flights.html哪个更清洁。

所以它必须对路由做些什么,但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:1)

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

Router::connect('/wiki', array('controller' => 'wikis', 'action' => 'index'));
Router::connect('/wiki/:action/*', array('controller' => 'wikis'));
...