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が出力されているか確認すればよいと思います。