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 应该先映射插件名称,所以它应该能够处理重复的文件名。

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

谢谢你的帮助。

4

1 回答 1

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)

于 2013-01-23T07:58:46.673 回答