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

Plugins 来自不同插件的重复控制器名称,plugins,cakephp-2.3,Plugins,Cakephp 2.3,我有一个关于Cakephp2.3文件加载系统的问题 我有两个插件——我们称它们为“联系人”和“经理”,加载方式如下: CakePlugin::load('Contacts'); CakePlugin::load('Managers'); 它们中的每一个都有一个名为“DashboardController.php”的控制器,其中包含一个index()操作 当我尝试访问“联系人”的仪表板页面时,有时会看到以下错误: Error: Class "ManagersAppController" not

我有一个关于Cakephp2.3文件加载系统的问题

我有两个插件——我们称它们为“联系人”和“经理”,加载方式如下:

CakePlugin::load('Contacts');
CakePlugin::load('Managers');
它们中的每一个都有一个名为“DashboardController.php”的控制器,其中包含一个index()操作

当我尝试访问“联系人”的仪表板页面时,有时会看到以下错误:

Error: Class "ManagersAppController" not found
即使url看起来像这样:

http://mysite.com/contacts/dashboard
我读到Cakephp2.3不支持名称空间,这可能是因为我有两个同名的php类(DashboardController.php)。同时,我知道Cake应该首先映射插件名,所以它应该能够处理重复的文件名

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


谢谢你的帮助。

我刚刚从开发CakePHP的人那里找到了答案。事实上,您不能有两个同名的控制器或模型,即使它们位于不同的插件中

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

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

你可以在这里看到我的问题和他们的答案:


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

+1-在3.x之前,这似乎是一个可接受的答案。我刚刚经历了同样的事情,将应用程序从1.3升级到2.3。(也会影响模型-例如,两个插件各有一个类别模型。)