Cakephp WEB開発

【Cakephp】好きな場所でバリデーションのエラー表示をさせる

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

 

CakephpのFormヘルパーを使用していると、少ない記述で便利にタグを出力してくれる反面、その時々に「余計な」タグもセットで出力される場合があるので、慣れない人は、自由にFormヘルパーを使いこなすまでに少し苦労がいるかと思います。

 

ここではフォームのバリデーション時に好きな場所にエラー表示をさせる方法を提示しておきます。

例①: テンプレート内の好きな場所にエラー表示させる方法

 

step
1
Formヘルパーcontrol()のエラーオプションをfalseにする

<?= $this->Form->control('フォーム名', ['error' => false]) ?>

 

step
2
isFieldError()でバリデーションのエラーがあるか判定し、エラー表示

<?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)

https://book.cakephp.org/4/ja/views/helpers/form.html#id37

 

注意事項

$this->Form->create() には必ずエンティティを渡しておくことを忘れずに。(こーゆー初歩的なトコで詰まった過去が・・)

ではないと、当たり前ですが、isFieldError()の判定もできなければ、エラー内容を取得することもできないので。

 

-Cakephp, WEB開発
-