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