標準のHelperを拡張してカスタマイズする方法
CakePHP3、CakePHP4共通です。
CakePHP5ではAppView::loadHelper()がAppView::addHelper()に変更されています。
CakePHP2ではAppControllerの$helpersプロパティでHelperを指定します。
[参考記事] CakePHP2の場合
AppView.phpのinitialize()に次のように書くとViewでHelperを呼び出すことができます。
$this->loadHelper('【Viewでのプロパティ名】', ['className' => '【呼び出されるクラス名】']);
標準のHelper(組み込みヘルパー/コアヘルパー)を別のクラスを使用するよう指定できます。
$this->loadHelper('Form', ['className' => 'CustomForm']);
テンプレートを指定する場合は配列に追加します。
$this->loadHelper('Form', ['className' => 'CustomForm', 'templates' => 'form-templates']);
独自のHelperはsrc/View/Helper配下に配置します。
例
src/View/AppView.php
class AppView extends View { /** * Initialization hook method. * * Use this method to add common initialization code like loading helpers. * * e.g. `$this->loadHelper('Html');` * * @return void */ public function initialize(): void { // 拡張Helperを使用する $this->loadHelper('Flash', ['className' => 'CustomFlash']); $this->loadHelper('Form', ['className' => 'CustomForm']); $this->loadHelper('Html', ['className' => 'CustomHtml']); $this->loadHelper('Paginator', ['className' => 'CustomPaginator']); $this->loadHelper('Url', ['className' => 'CustomUrl']); } }
src/View/Helper/CustomFlashHelper.php
<?php declare(strict_types=1); namespace App\View\Helper; use Cake\View\Helper\FlashHelper; /** * FlashHelperの拡張ヘルパー * * @link https://book.cakephp.org/4/ja/views/helpers/flash.html */ class CustomFlashHelper extends FlashHelper { }
src/View/Helper/CustomFormHelper.php
<?php declare(strict_types=1); namespace App\View\Helper; use Cake\View\Helper\FormHelper; /** * FormHelperの拡張ヘルパー * * @property \Cake\View\Helper\HtmlHelper $Html * @property \Cake\View\Helper\UrlHelper $Url * @link https://book.cakephp.org/4/ja/views/helpers/form.html */ class CustomFormHelper extends FormHelper { }
src/View/Helper/CustomHtmlHelper.php
<?php declare(strict_types=1); namespace App\View\Helper; use Cake\View\Helper\HtmlHelper; /** * HtmlHelperの拡張ヘルパー * * @property \Cake\View\Helper\UrlHelper $Url * @link https://book.cakephp.org/4/ja/views/helpers/html.html */ class CustomHtmlHelper extends HtmlHelper { }
src/View/Helper/CustomPaginatorHelper.php
<?php declare(strict_types=1); namespace App\View\Helper; use Cake\View\Helper\PaginatorHelper; /** * PaginatorHelperの拡張ヘルパー * * @property \Cake\View\Helper\UrlHelper $Url * @property \Cake\View\Helper\NumberHelper $Number * @property \Cake\View\Helper\HtmlHelper $Html * @property \Cake\View\Helper\FormHelper $Form * @link https://book.cakephp.org/4/ja/views/helpers/paginator.html */ class CustomPaginatorHelper extends PaginatorHelper { }
src/View/Helper/CustomUrlHelper.php
<?php declare(strict_types=1); namespace Cake\View\Helper; use Cake\View\Helper\UrlHelper; /** * UrlHelperの拡張ヘルパー * * @link https://book.cakephp.org/4/ja/views/helpers/url.html */ class CustomUrlHelper extends UrlHelper { }
関連記事
- テンプレート(template)側でログイン情報を取得する方法
- フォームの必須エラーメッセージをHTML5標準にする方法、カスタマイズする方法
- 国際化i18n(多言語化)
- URLをハイフン区切りからアンダーバー区切りやキャメルケースにする方法
- CakePHP4系の入手方法・インストール方法
- Composerコマンドでウクライナへのメッセージが表示されたことがあります
- Composerをインストールする方法と使い方
- コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方
- Seedの実行順(外部キー制約などを先に実行させる方法) Foreign key violation
- Seedを実行した後にシーケンスを更新する方法(duplicate key valueエラー)
- SQLクエリー(SQL文)を直接実行する方法
- PostgreSQLでERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.と出る場合
- PostgreSQLで自動採番をするシーケンス(sequence)とは【AUTO INCREMENT】
- Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合
- CakePHP3
- CakePHPのバージョンごとのシステム要件
- AuthコンポーネントのパスワードをCakePHPを使用せずハッシュ化する方法(パスワードの生成ルール)
- CakePHP3系の入手方法・インストール方法
- 1つのフィールドにバリデーションエラーを1つだけ表示させる方法
スポンサーリンク