我在CakePHP中有几个项目,并且希望将公共代码移动到插件中,并为这些插件使用单独的GIT存储库。
例如,我创建了一个UserManager插件,其中包含用户,组和权限的MVC。
我的问题是:不同的项目与插件中的模型有不同的(附加)关系。例如,一个项目还应具有“用户所属位置”。
我现在很困惑如何正确设置它。该手册介绍了如何覆盖插件视图,但不知道如何使用模型和控制器。
如何以干净的方式完成这项工作?
答案 0 :(得分:0)
您可以简单地扩展插件类并覆盖/添加必要的关联,就像您可能已经分别使用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');
}
或create the associations dynamically以防有现有的需要保留:
class AppUser extends User
{
public function __construct($id = false, $table = null, $ds = null)
{
parent::__construct($id, $table, $ds);
$this->bindModel(array('belongsTo' => array('Location')));
}
}