Record / CakePHP
CakePHP4にてFormHelperでlabelやinputをラップする方法
CakePHP 4のFormHelperを使ってフォームを作成すると、labelやinputはデフォルトの形式で出力されます。個別のdivでラップしてクラスを付けたい場合、カスタマイズが必要です。wrapオプションかカスタムテンプレートかの方法があり、カスタムテンプレートは指定する場所で、「Templateファイル」「コントローラー」「ビュービルダー」があり、柔軟に実装できます。
wrapオプションを使う
CakePHP 4では、$this->Form->control()のwrapオプションを使用すると、全体を特定のdivでラップできます。このコードは通常、Templateファイル(例: templates/Pages/home.php など)に記述します。
コード例
{[gist usual-tools/f11bf983baeee087ea82283d37a3bfa7]}
カスタムテンプレートを利用する
より柔軟にカスタマイズしたい場合、setTemplates()でテンプレートを変更できます。
指定する場所は「Templateファイル」「コントローラー」「ビュービルダー」があります。
Templateファイル
コード例
Templateファイル(例: templates/Pages/home.php)
コントローラーで設定する
フォームのテンプレートをコントローラーで指定すると、そのコントローラーの全てのビューに適用されます。
コード例
特定のコントローラーの initialize() メソッド(例: src/Controller/UsersController.php)
ビュービルダーでグローバルに適用する
アプリ全体でフォームのスタイルを統一したい場合、AppViewで設定すると便利です。
コード例
src/View/AppView.php
結びに
CakePHP 4 で label や input を divでラップする方法には、複数のアプローチがあります。