1つのフィールドにバリデーションエラーを1つだけ表示させる方法
CakePHP3では複数のバリデーションルールを設定すると、標準ではすべてのルールのチェックが行われます。
バリデーションエラーがあった場合、フィールド個別にエラーを表示させるには次のようにします。
<?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】のチェックは行われます。
関連記事
- CakePHP3系の入手方法・インストール方法
- コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方
- Seedの実行順(外部キー制約などを先に実行させる方法) Foreign key violation
- Seedを実行した後にシーケンスを更新する方法(duplicate key valueエラー)
- PostgreSQLでERROR: duplicate key value violates unique constraint "hoge_pkey" DETAIL: Key (id)=(10) already exists.と出る場合
- PostgreSQLで自動採番をするシーケンス(sequence)とは【AUTO INCREMENT】
- CakePHPのバージョンごとのシステム要件
- AuthコンポーネントのパスワードをCakePHPを使用せずハッシュ化する方法(パスワードの生成ルール)
スポンサーリンク