Cakephp PHP プログラミング

【Cakephp4】Bootstrapなどの汎用的なsetTemplates設定をまとめる方法

Cakephpのテンプレートセットのひな形の作成方法です。
一度テンプレートファイルを定義しておけば、各Viewにて同じsetTemplates()を定義しなくて済むので非常に便利です。是非使いこなしましょう。

config/app_form.phpを作成

config/app_form.php というファイルを作成し、以下のコードの様にシンプルに配列を返す定義をしておきます。

<?php
return [
    'inputContainer' => '<div class="input {{type}}{{required}} form-group">{{content}}</div>',
    'input' => '<input type="{{type}}" name="{{name}}" class="form-control" {{attrs}}/>',
];

この例では、Bootstrapのクラスをinputフィールドに付与しています。

 

AppViewクラスでtemplatesセット

public function initialize(): void
{
    parent::initialize();
    $this->loadHelper('Form', [
        'templates' => 'app_form',
    ]);
}

Formヘルパーのロード時にtemplatesオプションを指定しておくことで、$this->Form->control() した時にfom-controlクラスが付与されます。汎用的に利用するクラス名はあらかじめグローバル的に設定しておくと、実装が楽になります。

radioとかselectとかも同じ感じにすれば良さそうですね。

また、上書きが必要な場合、対象テンプレートファイル内で$this->Form->setTemplates()の中に設定をするか、個別にインプットフィールドにtemplatesオプションを指定して、実装すればよいかと思います。

その記事はこちら。

【Cakephp4】setTemplatesを各インプットフィールドで個別に定義

続きを見る

 

Cakephp4: FormHelper で使用するテンプレートのカスタマイズ
https://book.cakephp.org/4/ja/views/helpers/form.html#formhelper

-Cakephp, PHP, プログラミング