扩展或覆盖CakePHP插件而无需修改原始版本

时间:2011-11-13 05:48:43

标签: php cakephp

我正在使用一个插件(在本例中为Authake),我想覆盖/扩展一些功能,但我不知道我会怎么做。我已经设法弄清楚如何自定义视图(我创建了一个文件夹'/ app / views / plugins / authake',但我想知道如何修改/覆盖/扩展插件的模型和Compoenents。

1 个答案:

答案 0 :(得分:4)

我猜你想要扩展模型的功能或者插件中的行为?

例如,我们可以扩展序列行为的功能,该行为是序列插件的一部分,如下所示:

在app / models / behavior中创建一个新文件,并将其命名为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);
  }
}

?>

注意,在定义ExtendedBehavior类之前,我们必须使用Cake的App :: import导入Sequence行为。

更新您的模型以使用扩展类:

var $actsAs = array('ExtendedSequence');