1つのフィールドにバリデーションエラーを1つだけ表示させる方法
CakePHP3、CakePHP4、CakePHP5では複数のバリデーションルールを設定すると、標準ではすべてのルールのチェックが行われます。
[参考記事] 全てのバリデーションエラーをそれぞれ1つだけ表示させる簡単な方法
バリデーションエラーがあった場合、フィールド個別にエラーを表示させるには次のようにします。
<?php echo $this->Form->error("【フィールド名】");?>
1つのフィールドに複数のエラーがあると複数行のエラーが表示されます。
1つのフィールドでバリデーションエラーがあった場合、最初に引っかかった1つだけを表示するにはバリデーターに 'last' => true を付けます。
'last' => true を付けた項目で、バリデーションエラーに引っかかると、そのフィールドでは以降のバリデーションチェックが行われなくなります。
class HogeTable extends Table { public function validationDefault(Validator $validator) { $validator ->add('【フィールド名1】', '【ルール名1】' , [ 'rule' => '【ルール】', 'message' => '【表示するエラー】', 'last' => true, ]); // 【ルール名1】で引っかかると、【ルール名2】のチェックは行われない。 $validator ->add('【フィールド名1】', '【ルール名2】' , [ 'rule' => '【ルール】', 'message' => '【表示するエラー】', 'last' => true, ]); // 【ルール名1】で引っかかっても、フィールド名の異なる【ルール名3】のチェックは行われる。 $validator ->add('【フィールド名2】', '【ルール名3】' , [ 'rule' => '【ルール】', 'message' => '【表示するエラー】', 'last' => true, ]); return $validator; } }
この場合、【ルール名1】でエラーがあると、【ルール名2】のチェックは行われません。
【ルール名1】でエラーがあっても、フィールド名の異なる【ルール名3】のチェックは行われます。
関連記事
- 標準のValidatorを拡張してカスタマイズする方法
- テンプレート(template)側でログイン情報を取得する方法
- フォームの必須エラーメッセージをHTML5標準にする方法、カスタマイズする方法
- 標準のHelperを拡張してカスタマイズする方法 CakePHP2
- 国際化i18n(多言語化)
- URLをハイフン区切りからアンダーバー区切りやキャメルケースにする方法
- CakePHP5系の入手方法・インストール方法
- CakePHP4系の入手方法・インストール方法
- CakePHP3系の入手方法・インストール方法
- CakePHP2系の入手方法・インストール方法
- CakePHP1系(CakePHP1.3)をPHP7・PHP8以降に対応させる方法
- CakePHP1系(CakePHP1.3)の入手方法・インストール方法
- Composerコマンドでウクライナへのメッセージが表示されたことがあります
- Composerをインストールする方法と使い方
- コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方
- Seedの実行順(外部キー制約などを先に実行させる方法) Foreign key violation
- PostgreSQLでERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.と出る場合
- PostgreSQLで自動採番をするシーケンス(sequence)とは【AUTO INCREMENT】
- Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合
- CakePHPのバージョンごとのシステム要件
- PHP Strict Standards: Non-static method と出る場合の対処法
- CakePHPでカラムを比較してSELECTする方法
- [CakePHPのバグ]キャッシュ処理でunlinkエラーが発生する
- 『id』以外のプライマリキーのカラム名を使用する方法
- [CakePHPのバグ]キャッシュ処理でunserializeエラーが発生する
- プライマリキーIDを連番数字ではなく推測しにくい文字列にする方法
- 複数のデータベースを切り替える方法(別データベースを使用する)
- MySQLで文字化けを防ぐ方法
- action名にlistは使えない listを使う方法
- ログイン認証処理をする方法
- CakePHP、Symfony、Zend Frameworkの比較
- CakePHPのDB接続情報設定
- ファイル読み込みPATHを設定
- デバッグレベルを設定
- セキュリティレベルの設定
- キャッシュを有効にする
- CakePHPのエラーテンプレートの一覧
- データベーステーブルを参照しないページを作る
- TOPページはIndexControllerではない Cannot redeclare config()
- ディレクトリ構成
- CakePHP
スポンサーリンク