这:Cakephp Override HtmlHelper::link提出了一个非常相似的问题,但没有完整的答案。也许现在,有了Cake 2,就会有。
我想创建一个自定义助手,它是Cake的Paginator Helper的子类。我希望我的新助手覆盖Cake的Paginator助手的'numbers'方法,但我希望它继承所有其他方法。
是否有可能以这种方式扩展核心助手?显然,我不想:修改Cake Core;把不必要的代码放在AppHelper超类中;或将整个核心分页助手复制到我的新助手。
答案 0 :(得分:11)
添加到Brelsnok的解决方案中,别名是正确的方法。如果您将此代码添加到AppController.php文件中,则无论何时使用Paginator,它都将使用您的扩展类。
public $helpers = array(
'Paginator' => array('className' => 'PaginatorExt' )
);
由于PaginatorExtHelper类已经扩展了PaginatorHelper,因此被覆盖的唯一函数是numbers
。任何对其他Paginator方法的调用都将由核心PaginatorHelper类处理,就像它是一个vanilla Cake安装一样。
答案 1 :(得分: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;
}
}
?>
仅通过实施public function numbers()
继承其他功能。