无法访问插件中的模型

时间:2014-03-16 09:41:09

标签: cakephp

我在cakephp中有两个插件都包含User模型。当我想访问User模型的属性时,它总是调用第一个User模型。如何访问第二个用户模型?

2 个答案:

答案 0 :(得分:0)

初始化模型类时必须指定插件名称。所以你可以打电话给你的第一个用户'和你的第二个' PluginUser',即:

$this->User = ClassRegistry::init('PluginOne.User');
$this->PluginUser = ClassRegistry::init('PluginTwo.User');

答案 1 :(得分:0)

不可能 - 重命名模型

不幸的是,这是不可能的。由于模型的定义方式,这意味着您希望在同一名称空间(全局)中加载两个不同的类,这是PHP无法实现的 - 唯一的解决方案是使用不同的类名。

标准做法是命名前缀为插件名称的插件类,以避免冲突:

例如在foo插件中:

<?php
//App/Plugin/Foo/Model/FooUser.php
class FooUser extends FooAppModel {
}

在酒吧插件中:

<?php
//App/Plugin/Bar/Model/BarUser.php
class BarUser extends BarAppModel {
}

这会导致稍微繁琐的使用,但在尝试同时访问这两个类时可以防止出现障碍问题。