如何扩展或覆盖CakePHP核心助手的功能/方法

jos*_*ing 4 cakephp

这:Cakephp覆盖HtmlHelper :: link提出了一个非常相似的问题,但没有完整的答案.也许现在,有了Cake 2,就会有.

我想创建一个自定义帮助器,它是Cake的Paginator Helper的子类.我希望我的新助手覆盖Cake的Paginator助手的'numbers'方法,但我希望它继承所有其他方法.

是否有可能以这种方式扩展核心助手?显然,我不想:修改Cake Core; 把不必要的代码放在AppHelper超类中; 或者将整个核心分页助手复制到我的新助手中.

Der*_*ins 11

添加到Brelsnok的解决方案中,别名是正确的方法.如果将此代码添加到AppController.php文件中,则无论何时使用Paginator,它都将使用您的扩展类.

public $helpers = array(
'Paginator' => array('className' => 'PaginatorExt' )
);
Run Code Online (Sandbox Code Playgroud)

由于PaginatorExtHelper类已经扩展了PaginatorHelper,因此唯一被覆盖的函数是numbers.任何对其他Paginator方法的调用都将由核心PaginatorHelper类处理,就像它是一个vanilla Cake安装一样.


Bar*_*ans 5

创建文件PaginatorExtHelper.php你的View/Helper/文件夹中.它可能看起来像下面.
而不是发起$helpers = array('Paginator');$helpers = array('PaginatorExt');

<?php
App::uses('PaginatorHelper', 'View/Helper');

class PaginatorExtHelper extends PaginatorHelper {

    public function numbers($options = array()) {
        // logic here


        return $out;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

通过实现只有public function numbers()你继承其他功能.