Расширение или переопределение плагинов CakePHP без изменения оригинала - PullRequest
2 голосов
/ 13 ноября 2011

Я использую плагин (в данном случае Authake), и я хотел бы переопределить / расширить некоторые функции, но я не уверен, как бы я поступил так.Мне удалось выяснить, как настроить представление (я создал папку '/ app / views / plugins / authake', но мне интересно, как изменить / переопределить / расширить модели и компоненты плагина.

1 Ответ

5 голосов
/ 13 ноября 2011

Я предполагаю, что вы хотите расширить функциональность модели или, возможно, поведение в плагине?

Например, мы могли бы расширить функциональность поведения Sequence , которое является частью плагина Sequence , например:

Создайте новый файл в приложении / модели / поведения и назовите его extended_sequence.php

В этом файле мы создадим класс ExtendedSequenceBehavior , который расширяет SequenceBehavior и переопределяет метод beforeFind . Это будет выглядеть примерно так:

<?php
/**
 * Import the SequenceBehavior from the Sequence Plugin
 */
App::import('Behavior', 'Sequence.Sequence');

/**
* Extended Sequence Behavior
*/
class ExtendedSequenceBehavior extends SequenceBehavior
{

  /**
   * Overrides the beforeFind function
   */
  public function beforeFind(&$model, $queryData)
  { 
    /**
     * Do something different here such as modify the query data
     */

    /**
     * You could still call the original function as well
     */
    parent::beforeFind(&$model, $queryData);
  }
}

?>

Обратите внимание, что мы должны импортировать поведение Sequence, используя Cake App :: import, прежде чем мы определим класс ExtendedBehavior.

Обновите модель, чтобы использовать расширенный класс:

var $actsAs = array('ExtendedSequence');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...