CakephpのFormヘルパーを使用していると、少ない記述で便利にタグを出力してくれる反面、その時々に「余計な」タグもセットで出力される場合があるので、慣れない人は、自由にFormヘルパーを使いこなすまでに少し苦労がいるかと思います。
ここではフォームのバリデーション時に好きな場所にエラー表示をさせる方法を提示しておきます。
例①: テンプレート内の好きな場所にエラー表示させる方法
step
1Formヘルパーcontrol()
のエラーオプションをfalseにする
<?= $this->Form->control('フォーム名', ['error' => false]) ?>
step
2isFieldError()
でバリデーションのエラーがあるか判定し、エラー表示
<?php if ($this->Form->isFieldError('somethingFormName')) : ?> <div class="error-message"><?= h($hoge->Form->error('somethingFormName')) ?></div> // <div>タグとかはスタイルは自分で決めてね <?php endif ?>
例②: 複数のエラー出力が必要な場合は、foreach()
で回す
<?php if ($this->Form->isFieldError('somethingFormName')) : ?> <?php foreach ($hoge->Form->errors()['somethingFormName'] as $errMsg) : ?> <div class="error-message"><?= h($errMsg) ?></div> <?php endforeach ?> <?php endif ?>
てな感じ。以下はマニュアルです。
■ エラーの表示と確認(Cake4)
注意事項
$this->Form->create()
には必ずエンティティを渡しておくことを忘れずに。(こーゆー初歩的なトコで詰まった過去が・・)
ではないと、当たり前ですが、isFieldError()
の判定もできなければ、エラー内容を取得することもできないので。