
CakephpのFormヘルパーを使用していると、少ない記述で便利にタグを出力してくれる反面、その時々に「余計な」タグもセットで出力される場合があるので、慣れない人は、自由にFormヘルパーを使いこなすまでに少し苦労がいるかと思います。
ここではフォームのバリデーション時に好きな場所にエラー表示をさせる方法を提示しておきます。
step
1Formヘルパーcontrol()
のエラーオプションをfalseにする
code
<?= $this->Form->control('フォーム名', ['error' => false]) ?>
step
2isFieldError()
でバリデーションのエラーがあるか判定し、エラー表示
code
<?php if ($this->Form->isFieldError('somethingFormName')) : ?>
<div class="error-message"><?= h($hoge->Form->error('somethingFormName')) ?></div> // <div>タグとかはスタイルは自分で決めてね
<?php endif ?>
例2: 複数のエラー出力が必要な場合は、foreach()
で回す
code
<?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()
の判定もできなければ、エラー内容を取得することもできないので。