1

FOSUserBundleを使用しています。私のプロジェクトでは、独自のUserBundleを作成し、コントローラー、フォーム、およびハンドラーをオーバーライドしました。これで、ユーザーが既存の電子メールに登録しようとすると、サイトがクラッシュします(電子メールは教義に固有のものです)。検証が行われていないようです。私はvalidation.ymlにあるようにいくつかの検証があるだろうと思いました:

YOP\UserBundle\Entity\User:
  constraints:
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: email
  properties:
    email:
      - Email: ~

メールフィールドで検証が行われないのはなぜですか?検証の制約が考慮されていることを確認するにはどうすればよいですか?

PS:validation.ymlファイルが私のUserBundleにありません、それは問題ですか?

編集:

私のUserBundleのコードはここ にあります検証が行われなくなった理由がわかりません...

4

2 に答える 2

6

次の方法で問題を解決しました:

  • ユーザーエンティティを含むバンドルと同じバンドルにvalidation.ymlファイルがあり、ユーザーエンティティを指している
  • 「登録」検証グループをフィールドに追加する

validate.yml:

YOP\YourOwnPoetBundle\Entity\User:
  constraints:
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: email
  properties:
    email:
      - Email: { groups: [Registration] }
    plainPassword:
      - MinLength: { limit: 5, message: "Your password must have at least {{ limit }} characters" }
    name:
      - NotBlank: { groups: [Registration] }
    familyName:
      - NotBlank: { groups: [Registration] }
    sex:
      - Choice: { choices: [1, 2], groups: [Registration] }
    birthdate:
      - NotNull: { groups: [Registration] }
    city:
      - NotBlank: { groups: [Registration] }
    howDidYouHear:
      - Choice: { choices: [1, 2, 3, 4, 5, 6, 7, 8], groups: [Registration] }
于 2012-11-24T03:32:20.857 に答える
-1

validation.ymlユーザーバンドルに含まれている必要があります。
/app/config/config.yml次のように更新する必要があります。

validation:      { enabled: true,  enable_annotations: false }
于 2012-09-05T08:06:19.940 に答える