CakePHPのフォームヘルパーはすごく便利なんだけど、バリデーションのエラー表示を好きな場所に表示する方法を探すのにけっこう時間がかかったのでメモ。
<?= $this->Form->control("name", ['type' => 'text', 'label'=>'名前', 'required' => 'required', 'error' => false]);?>
フォームヘルパーでフィールド等を生成する時に
‘error’ => false
とすることでデフォルトで表示されるエラー表示をさせくする。
任意の場所にエラーがある場合にのみエラー表示させる記述をする。
<?php
if ($entity->errors('name')) {
?>
<div class="form-group error-message">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="name"></label>
<div class="col-md-6 col-sm-6 col-xs-12">
<?= $this->Form->error('name') ?>
</div>
</div>
<?php
}
?>
if ($entity->errors(‘name’)) {
でnameフィールドにバリデーションエラーがあれば表示させ
実際にエラー表示は
<?= $this->Form->error(‘name’) ?>
で行っている。
正直すごくめんどくさい。
この他に余計なタグdivの非表示等がフォームヘルパーの設定でできるのでやっておいたほうがいいけど、なぜか自分の場合うまくいかなかった。
ここは未解決だけど時間がないから飛ばす。