php - CakePHP Controller 别名

标签 php cakephp cakephp-2.2

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

我有什么

  • example.com/log/
  • LogsController.php

我有 LogsController 而不是 LogController (复数),因为 CakePHP 希望您有复数形式的 Controller 。

但是您可能知道/注意到,example.com/log/ 将永远不会使用 LogsController,因为 url 中缺少“s”。

现在,我希望将 /log/* 重定向到 /logs/*。使用以下代码可以很好地工作:

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

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

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

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

Error: LogController could not be found.

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

我还有几个 Controller ,我想更改它,比如 flight => FlightsControllerprofile => ProfilesController


看看this question .这是关于同一主题,但略有不同。它可能会以某种方式帮助您。

最佳答案

好的,在 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 和类似的类出现问题。所以我想我会更喜欢这篇文章中的代码,因为这只是一个别名而不是核心更改脚本。无论如何,感谢您的帮助。

关于php - CakePHP Controller 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925578/

相关文章:

mysql - cakephp 3.1 mysql 已经消失

cakephp - 错误 : SQLSTATE[42S02]: Base table or view not found

没有 name 属性的 cakephp 表单输入

php - 将购物袋数据存储到 mysql 数据库中的最有效方法

php - get_template_directory_uri() 和 bloginfo ('template_directory' 之间的区别)

php - 带有 vfsStream 的 FilesystemIterator

cakephp - 在 CakePHP 的 beforeFilter 中渲染后停止执行

php - 将子域重定向到 CakePHP 操作

CakePHP 插件模型关联不起作用

PHP:如何通过另一个变量设置一个变量的值?