Cakephp のデフォルトのヘルパーに独自のメソッドを追加し、それを利用する方法です。
AppHtmlHelper: 拡張するファイルを作成
まず最初に拡張するメソッドのヘルパーファイルを作成します。
・src/View/Helper/AppHtmlHelper.php
<?php declare(strict_types=1); namespace App\View\Helper; use Cake\View\Helper\HtmlHelper; class AppHtmlHelper extends HtmlHelper { /** * カスタムボタンタグを生成 * * @param string $text ボタンパーツ上に表示したいテキスト * @return string HTML: <button>タグ */ public function customButton($text) { return '<button class="btn btn-default btn-xs">' . $text . '</button>'; } }
この例では、HtmlHelper
を親として継承していますが、親ヘルパーの選択により、ある程度カテゴリ分けできそうです。
例えば、Form に関連するヘルパーを定義したい場合、FormHelperを継承すれば管理しやすくなります。
AppView: ヘルパーを別名で呼び出す
<?php declare(strict_types=1); namespace App\View; use Cake\View\View; 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 { parent::initialize(); $this->loadHelper('Html', ['className' => 'AppHtml']); } }
AppView.php にて loadHelper()
を利用し、Htmlヘルパーを定義します。そこに className
オプションを設定することで、AppHtmlヘルパーに定義したメソッドを利用することができます。
実際に呼び出す時はテンプレート内で、
// テンプレート内で出力 <?= $this->Html->customButton('Click') ?>
とすることで利用できます。
■ Cakephp4: ヘルパーの別名
https://book.cakephp.org/4/ja/views/helpers.html#aliasing-helpers