CakePHP,创建可扩展的插件

时间:2013-09-25 14:18:32

标签: cakephp plugins model override

我在CakePHP中有几个项目,并且希望将公共代码移动到插件中,并为这些插件使用单独的GIT存储库。

例如,我创建了一个UserManager插件,其中包含用户,组和权限的MVC。

我的问题是:不同的项目与插件中的模型有不同的(附加)关系。例如,一个项目还应具有“用户所属位置”。

我现在很困惑如何正确设置它。该手册介绍了如何覆盖插件视图,但不知道如何使用模型和控制器。

如何以干净的方式完成这项工作?

1 个答案:

答案 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')));
    }
}