Php FOS用户覆盖对用户存储的唯一约束

Php FOS用户覆盖对用户存储的唯一约束,php,forms,validation,symfony,fosuserbundle,Php,Forms,Validation,Symfony,Fosuserbundle,我构建了一个多站点应用程序,有以下要求:用户应该能够使用相同的电子邮件和用户名在集合的不同站点上创建帐户 以下是我所做的: 创建以FOSUserBundle为父级的UserBundle 在用户名、用户名规范、电子邮件和电子邮件规范字段上添加AttributeOverride 通过覆盖验证组禁用初始验证组(注册和配置文件) 第2点: /** * User * The user class to work with, based on FOSUser one. * To improve loo

我构建了一个多站点应用程序,有以下要求:用户应该能够使用相同的电子邮件和用户名在集合的不同站点上创建帐户

以下是我所做的:

  • 创建以FOSUserBundle为父级的UserBundle
  • 在用户名、用户名规范、电子邮件和电子邮件规范字段上添加AttributeOverride
  • 通过覆盖验证组禁用初始验证组(注册和配置文件)
  • 第2点:

    /**
     * User
     * The user class to work with, based on FOSUser one.
     * To improve loose coupling, don't forget to link FOS\UserBundle\Model\UserInterface instead.
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="LCH\UserBundle\Entity\UserRepository")
     * 
     * @ORM\AttributeOverrides({
     *      @ORM\AttributeOverride(
     *          name="email",
     *          column=@ORM\Column(
     *              type="string",
     *              name="email",
     *              length=255,
     *              nullable=false,
     *              unique=false
     *          )
     *      ),
     *      @ORM\AttributeOverride(
     *          name="emailCanonical",
     *          column=@ORM\Column(
     *              type="string",
     *              name="email_canonical",
     *              length=255,
     *              nullable=false,
     *              unique=false
     *          )
     *      ),
     *      @ORM\AttributeOverride(
     *          name="username",
     *          column=@ORM\Column(
     *              type="string",
     *              name="username",
     *              length=255,
     *              nullable=false,
     *              unique=false
     *          )
     *      ),
     *      @ORM\AttributeOverride(
     *          name="usernameCanonical",
     *          column=@ORM\Column(
     *              type="string",
     *              name="username_canonical",
     *              length=255,
     *              nullable=false,
     *              unique=false
     *          )
     *      )
     * })
     */
    
    第3点

    fos_user:  
        profile:
            form:
                validation_groups:  [Default]
        registration:
            form:
                validation_groups:  [Default]
    
    最后2分是由于以下原因获得的

    但在表单验证时,我仍然会触发错误,告诉我电子邮件地址已被使用


    我上一次尝试是通过在我的子包中重新定义vendor/friendsofsymfony/user bundle/Resources/config/storage validation/orm.xml来覆盖vendor/friendsofsymfony/user bundle/Resources/config/storage validation/orm.xml(其中存在唯一约束)。它也不起作用,这只是一次“绝望”的尝试,因为如果它真的起作用,我就不明白为什么要使用前面的点。

    我最终发现了问题,这几乎和往常一样,在椅子和屏幕之间

    config.yml之前

    registration:
            form:
                type: LCH\UserBundle\Form\RegistrationType
    
        profile:
            form:
                validation_groups:  [Default] # Here you can also add your own groups if you have extra validation
        registration:
            form:
                validation_groups:  [Default] # Here you can also add your own groups if you have extra validation
    
    registration.form密钥定义了两次。。。在合并它们之后

    profile:
            form:
                validation_groups:  [Default]
        registration:
            form:
                validation_groups:  [Default]
                type: LCH\UserBundle\Form\RegistrationType
    

    …一切都很好。

    完美!我也遇到过同样的情况,这个解决方案对我来说也很有魅力!!