来自不同插件的重复控制器名称

时间:2013-01-22 14:15:56

标签: plugins cakephp-2.3

我对Cakephp2.3中的文件加载系统有疑问。

我有两个插件 - 我们称之为“联系人”和“管理员”,加载方式如下:

CakePlugin::load('Contacts');
CakePlugin::load('Managers');

每个控制器都有一个名为“DashboardController.php”的控制器,其中包含一个index()动作。

当我尝试访问“联系人”的信息中心页面时,有时会看到以下错误:

Error: Class "ManagersAppController" not found

即使网址看起来像这样:

http://mysite.com/contacts/dashboard

我读到Cakephp2.3不支持名称空间,这可能会发生,因为我有两个同名的php类(DashboardController.php)。同时,我知道Cake应该首先映射插件名称,因此它应该能够处理重复的文件名。

你知道我为什么会看到这个随机错误吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我刚刚找到了开发的CakePHP的答案。实际上,您不能拥有两个具有相同名称的控制器或模型,即使它们位于不同的插件中。

这只发生在CakePHP2.x中,我引用:

  

这是Cake2.x和延迟加载方法的已知限制   使用App :: uses()

您可以在此处查看我的问题及其答案:http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/3558-loading-file-from-a-different-plugin

解决方案是使用插件名重命名具有冲突名称的控制器/模型和/或命名插件中的所有控制器和模型(例如DashboardController.php将成为ContactsDashboardController.php)