5

This: Cakephp Override HtmlHelper::link提出了一个非常相似的问题,但没有完整的答案。也许现在,随着 Cake 2 的推出,将会有。

我想创建一个自定义助手,它是 Cake 的 Paginator Helper 的子类。我希望我的新助手覆盖 Cake 的 Paginator 助手的“数字”方法,但我希望它继承所有其他方法。

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

4

2 回答 2

11

添加到 Brelsnok 的解决方案中,混叠是正确的方法。如果您将此代码添加到您的 AppController.php 文件中,那么无论何时您使用分页器,它都会使用您的扩展类。

public $helpers = array(
'Paginator' => array('className' => 'PaginatorExt' )
);

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

于 2013-05-29T03:05:30.127 回答
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()您继承其他功能。

于 2012-07-25T12:10:02.510 回答