我在 CakePHP 中有几个项目,并且想将通用代码移动到插件中,并为它们使用单独的 GIT 存储库。
例如,我创建了一个包含用户、组和权限的 MVC 的 UserManager 插件。
我的问题是:不同的项目与插件中的模型有不同的(附加)关系。例如,一个项目应该另外有“User belongsTo Location”。
我现在很困惑如何正确设置它。该手册讲述了如何覆盖插件视图,但没有讲述如何使用模型和控制器完成此操作。
如何以干净的方式完成?
我在 CakePHP 中有几个项目,并且想将通用代码移动到插件中,并为它们使用单独的 GIT 存储库。
例如,我创建了一个包含用户、组和权限的 MVC 的 UserManager 插件。
我的问题是:不同的项目与插件中的模型有不同的(附加)关系。例如,一个项目应该另外有“User belongsTo Location”。
我现在很困惑如何正确设置它。该手册讲述了如何覆盖插件视图,但没有讲述如何使用模型和控制器完成此操作。
如何以干净的方式完成?
AppModel
您可以简单地扩展插件类并覆盖/添加必要的关联,就像您可能已经在做这件事一样UserManagerAppModel
。
http://book.cakephp.org/2.0/en/plugins.html#plugin-models
这是一个基本示例(假设插件中的用户类名为User
):
App::uses('User', 'UserManager.Model');
class AppUser extends User
{
public $belongsTo = array('Location');
}
或者动态创建关联,以防需要保留现有关联:
class AppUser extends User
{
public function __construct($id = false, $table = null, $ds = null)
{
parent::__construct($id, $table, $ds);
$this->bindModel(array('belongsTo' => array('Location')));
}
}