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文件与包含我的用户实体的文件放在同一个包中,并指向我的用户实体
  • 将“注册”验证组添加到我的字段

验证.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 回答