Расширяет плагин CakePHP - PullRequest
       0

Расширяет плагин CakePHP

1 голос
/ 24 октября 2011

Я использую плагин spark_plug на cakephp, этот плагин предоставляет систему аутентификации-acl для зарегистрированных пользователей и администраторов в cakephp. Я хочу добавить новый код и функциональные возможности в контроллер пользователя, но я не хочу изменять «основные» файлы плагинов.

Я думал, можно ли оставить «основной» контроллер плагина как он (без изменений) «\ app \ plugins \ spark_plug \ controllers \ users_controller.php» и создать вторичный контроллер со всем новым кодом и функциями, что-то как этот "\ app \ controllers \ users_controller.php" и расширяет плагин "основной" контроллер.

Это возможно? и как этого добиться?

Или вы думаете, есть ли другой способ сделать то, что я хочу?

Спасибо!

1 Ответ

0 голосов
/ 24 октября 2011

Вы могли бы использовать композицию, а не наследование? То есть создайте "app \ controllers \ users_controller", в котором есть экземпляр контроллера плагина. UsersController выполняет любые неизмененные действия через заглушки, например:

class UsersController extends AppController {

   ...

   var spark_plug_users_controller;  

   ...

   public function __construct() {
    parent::__construct();

    App::import('Controller', 'SparkPlug/Users'); // this is probably wrong.
        $this->spark_plug_users_controller = new UsersController; // as is this.
        $this->spark_plug_users_controller->constructClasses();
   }

   ...

   //example non-overridden method
   function login() {
      return $this->spark_plug_users_controller->login();
   }

   ...

}

Ваша проблема заключается в доступе к защищенным / закрытым методам внутри контроллера пользователя spark_plug. Но если вам это не нужно, это может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...