2013-09-25 2 views
0

У меня есть несколько проектов в CakePHP, и я хотел бы переместить общий код в плагины и использовать отдельные репозитории GIT для них.CakePHP, создавая расширяемый плагин

Например, я создал плагин UserManager, который содержит MVC для пользователей, групп и разрешений.

Моя проблема: разные проекты имеют разные (дополнительные) отношения к моделям из плагина. Например, один проект должен иметь «Пользователь принадлежит для местоположения» дополнительно.

Я сейчас запутался, как правильно настроить это. В руководстве описано, как переопределить представления плагинов, но не так, как это делается с моделями и контроллерами.

Как это можно сделать чистым способом?

+0

Пожалуйста, не забудьте указать точную версию CakePHP. – ndm

ответ

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'))); 
    } 
} 
Смежные вопросы