
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