5

これ:Cakephp Override HtmlHelper :: linkは非常によく似た質問をしますが、完全な答えはありませんでした。おそらく今、Cake 2が出て、あるでしょう。

CakeのPaginatorHelperのサブクラスであるカスタムヘルパーを作成したいと思います。新しいヘルパーでCakeのPaginatorヘルパーの「numbers」メソッドをオーバーライドしたいのですが、他のすべてのメソッドを継承したいと思います。

この方法でコアヘルパーを拡張することは可能ですか?明らかに、私はしたくありません:CakeCoreを変更します。AppHelperスーパークラスに不要なコードを配置します。または、コアのPaginationHelper全体を新しいヘルパーに複製します。

4

2 に答える 2

11

Brelsnok のソリューションに加えて、エイリアシングが正しい方法です。このコードを AppController.php ファイルに追加すると、Paginator を使用するたびに、拡張クラスが使用されます。

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

PaginatorExtHelper クラスはすでに PaginatorHelper を拡張しているため、オーバーライドされる唯一の関数はnumbers. 他の Paginator メソッドへの呼び出しは、あたかもバニラ Cake のインストールであるかのように、コア PaginatorHelper クラスによって処理されます。

于 2013-05-29T03:05:30.127 に答える
5

PaginatorExtHelper.phpフォルダーにファイルを作成しView/Helper/ます。以下のようになります。そして、 do
を開始する代わりに$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 に答える