CakePHP的控制器别名(CakePHP controller alias)

2019-06-26 23:39发布

我知道有几个关于这个主题的其他议题,但他们不似乎符合我的需要。

是)我有的

  • example.com/log/
  • LogsController.php

我有LogsController代替LogController (复数),因为CakePHP的要你有多个控制器。

但是,正如你可能知道/通知, example.com/log/将永远不会使用LogsController因为在URL中丢失的“。

现在,我想有/log/*被重定向到/logs/* 。 工作完全正常用下面的代码:

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

但是,当我尝试访问example.com/log/actions/foo/bar它似乎并没有工作。 因此,一些Googeling后,我发现这一点:

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

伟大的作品。 但现在当我试图再次访问example.com/log/,它说

错误:LogController找不到。

我的问题是,我该如何设置了一个别名我的网址,以便/log/将使用LogsController ,而不是试图用LogController

我有几个地方控制器我想改变这一点,就像flight => FlightsControllerprofile => ProfilesController


看看这个问题 。 它是关于同一主题,但略有不同。 它可以帮助你以某种方式。

Answer 1:

好了,与其他一些人在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'));

这是行不通的。

因此,在这个职位的第一个两行代码解决了这个问题对我来说。 另一个家伙告诉我,阿伦耆那教的解决方案是不是一个合适的解决方案,因为它改变了nameconventions核心为好。 这将导致与FormsHelper问题和类这样的。 所以,我想我会喜欢的代码在这个岗位,因为这只是一个别名,而不是脚本的核心改变块。 感谢反正帮助。



Answer 2:

与路由正确的方法是如下这样做。

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

这是说,当一个动作在使用它的网址找到了路由器,但它没有PARAMS被发现然后默认使用索引操作。



Answer 3:

我对所有这一切都略有不同的看法。 复数更为经常去的东西,但在occassions当复数是完全错误的更准确的方法,我添加例外到变形器类(/ lib目录/蛋糕/实用/偏转板)。

在您的例子我想补充log到的这个列表uninflected话。 这意味着,全系统的蛋糕不会追加了“S”。 你将有你的LogController你的看法会坐在Log查看文件夹等...

编辑

我已经遇到了一个非常巧妙的方式从内部做到这一点app/config/bootstrap.php

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

这将增加log的不变调的列表,而无需改变核心中的文件,以允许更容易的版本更新。



Answer 4:

你可以简单地做它用以下:

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

您的路由器connnect代码将保持不变。 恳请如果它不适合你的工作。



文章来源: CakePHP controller alias