我对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应该首先映射插件名称,因此它应该能够处理重复的文件名。
你知道我为什么会看到这个随机错误吗?
感谢您的帮助。
答案 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)