5

我知道关于这个主题还有其他几个主题,但似乎没有一个符合我的需要。

是)我有的

  • example.com/log/
  • 日志控制器.php

我有LogsController而不是LogController(复数),因为 CakePHP 希望你有复数的控制器。

但正如您可能知道/注意到的那样,由于 url 中缺少“s” ,example.com/log/因此永远不会使用。LogsController

现在,我想/log/*被重定向到/logs/*. 与以下代码完美配合:

Router::connect ('/log/*', array('controller'=>'logs'));

但是,当我尝试访问example.com/log/actions/foo/bar它似乎不起作用。所以经过一些谷歌搜索后,我发现了这个:

Router::connect ('/log/:action/*', array('controller'=>'logs'));

效果很好。但是现在当我再次尝试访问 example.com/log/ 时,它说

错误:找不到 LogController。

问题 所以我的问题是,如何为我的 url 设置别名,以便/log/使用LogsController而不是尝试使用LogController.

我还有一些想要更改的控制器,例如flight => FlightsController, profile => ProfilesController


看看这个问题。主题大致相同,但略有不同。它可能会以某种方式帮助你。

4

4 回答 4

10

好的,在 IRC 上其他一些人的帮助下,诸如此类。我发现了以下内容。

的组合

Router::connect('/flight/:action/*', array('controller'=>'flights'));
Router::connect('/flight/*', array('controller'=>'flights'));

成功了。我以前试过这个,但按其他顺序,像这样:

Router::connect('/flight/*', array('controller'=>'flights'));
Router::connect('/flight/:action/*', array('controller'=>'flights'));

这是行不通的。

所以这篇文章的前两行代码为我解决了这个问题。另一个人告诉我,Arun Jain 的解决方案不是一个合适的解决方案,因为它也改变了核心中的命名约定。这将导致 FormsHelper 和类似的类出现问题。所以我想我会更喜欢这篇文章中的代码,因为这只是一个别名,而不是一个核心更改脚本。无论如何感谢您的帮助。

于 2012-08-13T14:30:51.450 回答
1

要通过路由执行此操作,正确的方法如下。

Router::connect('/flight', array('controller'=>'flights','action'=>'index'));
Router::connect('/flight/:action/*', array('controller'=>'flights'));

这告诉路由器,当在 URL 中找到一个动作来使用它,但它没有找到参数时,默认是使用索引动作。

于 2012-08-13T14:52:51.423 回答
0

我对这一切的看法略有不同。复数通常是更准确的处理方式,但在复数完全错误的情况下,我会在 Inflector 类 (/lib/Cake/Utility/Inflector) 中添加一个异常。

在您的示例中,我将添加log到此uninflected单词列表中。这意味着系统范围的蛋糕不会附加“s”。您将拥有您LogController的视图将位于Log视图文件夹等...

编辑

我从内部遇到了一种更简洁的方法来做到这一点app/config/bootstrap.php

Inflector::rules(
    'plural',
    array(
         'uninflected' => array('log')
    )
);

这将添加log到未变形列表中,而无需更改核心中的文件以允许更轻松的版本更新。

于 2012-10-18T14:44:05.237 回答
-1

您可以使用以下方法简单地做到这一点:

class LogsController extends AppController
{
public $name = 'Log';
..... YOUR REMAINING CODE ......
}

您的路由器连接代码将保持不变。请询问它是否不适合您。

于 2012-08-13T04:36:05.817 回答