我知道关于这个主题还有几个其他主题,但似乎没有一个符合我的需要。
我有什么
- 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 => FlightsController
、profile => 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/