【问题标题】:Cakephp Controller alias not working completelyCakephp 控制器别名不能完全工作
【发布时间】:2012-10-13 15:52:07
【问题描述】:

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


我改变了对logslog 的想法,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中的一个额外的词,用户不需要知道他在哪里。

我正在使用controlleraction 键创建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,即干净得多。

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

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

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

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

    【讨论】:

    • 这个解决方案似乎运作良好。不过,我必须对其进行更多测试才能 100% 确定。如果是修复,我会将这篇文章标记为答案。谢谢 :) 我删除了当前路由的第二行,并且没有给出任何警告或错误。因此,将第二行更改为您的第一行并更改顺序就可以了。
    • 好的,我测试了一下,它似乎工作正常。毕竟,如果我遇到任何问题,我会告诉你们。我会在前面的问题中发布这个问题的链接。
    猜你喜欢
    • 2012-08-09
    • 2014-12-15
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多