Cakephp PHP WEB開発

【Cakephp2→4】ビュー編: Formヘルパーinputの属性afterの移行

※本サイトはPR表記を含みます。

Cake2からCake4へのテンプレート移行時によく遭遇するのはFormヘルパー。Formヘルパーの $this->Form->input() 箇所は基本的に $this->Form->control になります。オプションの属性も使えなくなっているものは多数ありますが、本記事は after 属性についてです。

Cake2: Formヘルパー input の after属性

たとえば、以下のようなインプットがあるとします。

<?= $this->Form->input('hoge', ['type' => 'text', 'after' => 'アフターメッセージです']) ?>

HTMLとしては、

<input type="text" name="hoge">アフターメッセージです

というような形で出力されます。

Cake4: Formヘルパー controlではafter属性は存在しない

Cake4では実は after 属性自体が存在しません。ですので、テンプレートセットを駆使して同じ表現をするように実装します。

<?= $this->Form->control('hoge', ['type' => 'text', 'templates' => ['input' => '<input type="{{type}}" name="{{name}}"{{attrs}} />アフターメッセージです']) ?>

少しコードは長くなってしまいますが、Formヘルパーの出力をコントロールする templates  を利用すれば大抵のことはCake2と同じ出力にすることが可能です。

困った時はブラウザのデベロッパーツール(F12)でどんなHTMLが出力されているか確認すればよいと思います。

-Cakephp, PHP, WEB開発
-