標準のHelperを拡張してカスタマイズする方法 CakePHP2

CakePHP2
CakePHP3、CakePHP4ではAppView::loadHelper()でHelperを指定します。
CakePHP5ではAppView::loadHelper()がAppView::addHelper()に変更されています。
[参考記事] CakePHP3、CakePHP4の場合

app/Controller/AppController.phpの$helpersプロパティに次のように書くとViewでHelperを呼び出すことができます。

    public $helpers = array(
        '【Viewでのプロパティ名】' => array(
            'className' => '【呼び出されるクラス名】',
        ),
    );

標準のHelper(組み込みヘルパー/コアヘルパー)を別のクラスを使用するよう指定できます。

    public $helpers = array(
        'Form' => array(
            'className' => 'CustomForm',
        ),
    );

独自のHelperはsrc/View/Helper配下に配置します。


app/Controller/AppController.php

class AppController extends Controller {
……

/**
 * ヘルパーの呼び出し設定
 *
 * @var array
 */
    public $helpers = array(
        'Flash' => array(
            'className' => 'CustomFlash',
        ),
        'Form' => array(
            'className' => 'CustomForm',
        ),
        'Html' => array(
            'className' => 'CustomHtml',
        ),
        'Paginator' => array(
            'className' => 'CustomPaginator',
        ),
    );
……
}

app/View/Helper/CustomFlashHelper.php

<?php

App::uses('FlashHelper', 'View/Helper');

/**
 * FlashHelperの拡張ヘルパー
 *
 * @link http://book.cakephp.org/2/ja/core-libraries/helpers/flash.html
 */
class CustomFlashHelper extends FlashHelper {

}

app/View/Helper/CustomFormHelper.php

<?php

App::uses('FormHelper', 'View/Helper');

/**
 * FormHelperの拡張ヘルパー
 *
 * @property      HtmlHelper $Html
 * @link http://book.cakephp.org/2/ja/core-libraries/helpers/form.html
 */
class CustomFormHelper extends FormHelper {

}

app/View/Helper/CustomHtmlHelper.php

<?php

App::uses('HtmlHelper', 'View/Helper');

/**
 * HtmlHelperの拡張ヘルパー
 *
 * @link http://book.cakephp.org/2/ja/core-libraries/helpers/html.html
 */
class CustomHtmlHelper extends HtmlHelper {

}

app/View/Helper/CustomPaginatorHelper.php

<?php

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

/**
 * PaginatorHelperの拡張ヘルパー
 *
 * @property      HtmlHelper $Html
 * @link https://book.cakephp.org/2/ja/core-libraries/helpers/paginator.html
 */
class CustomPaginatorHelper extends PaginatorHelper {

}

関連記事

スポンサーリンク

記号の名称(呼び名)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る