【Symfony】バリデーション制約 UniqueEntity の基本的な使い方とエラーメッセージについて
UniqueEntity
の fields
オプションを使うと指定したフィールドにユニーク制約をつけることができる。
App\Entity\Author: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: email
fields
オプションは省略して記述してもよい。
App\Entity\Author: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: email
message
オプションは制約違反したときのメッセージを定義することができ、 {{ value }}
というプレースホルダーを含めると、違反したフィールドの値を出力することができる。
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: email message: '{{ value }}は重複しています'
もし、2つ以上のフィールドの組み合わせがユニークになるように制約をつけたいならば、配列で指定することで実現できる。
App\Entity\Author: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: [email, username] message: 'メールアドレス{{ value }}は重複しています'
このとき message
オプションの {{ value }}
は配列の最初の要素が反映される。
もし、username についてメッセージを出力したいなら errorPath
オプションを使って指定するとよい。
App\Entity\Author: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: fields: [email, username] errorPath: username message: 'ユーザー名{{ value }}は重複しています'