FOS 用户覆盖用户存储的唯一约束
FOS User override unique constraint on user storage
我构建了一个多站点应用程序,具有以下要求:用户应该能够在集合的不同站点上创建帐户,使用相同的电子邮件和用户名。
这是我所做的:
- 以 FOSUserBundle 作为父级创建 UserBundle
- 在 username、usernameCanonical、email 和 emailCanonical 字段上添加 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]
由于 this question.
获得最后 2 分
但是在表单验证时,我仍然触发错误,告诉我电子邮件地址已被使用。
我最后一次尝试通过在我的子包中重新定义它来覆盖 vendor/friendsofsymfony/user-bundle/Resources/config/storage-validation/orm.xml(唯一约束所在的位置)。它也没有用,这只是一个 "desperate" 尝试,因为如果它成功了,我就不会明白为什么要使用前面的点了。
终于找到问题了,椅子和屏风之间几乎和往常一样。
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
...一切都很棒。
我构建了一个多站点应用程序,具有以下要求:用户应该能够在集合的不同站点上创建帐户,使用相同的电子邮件和用户名。
这是我所做的:
- 以 FOSUserBundle 作为父级创建 UserBundle
- 在 username、usernameCanonical、email 和 emailCanonical 字段上添加 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]
由于 this question.
获得最后 2 分但是在表单验证时,我仍然触发错误,告诉我电子邮件地址已被使用。
我最后一次尝试通过在我的子包中重新定义它来覆盖 vendor/friendsofsymfony/user-bundle/Resources/config/storage-validation/orm.xml(唯一约束所在的位置)。它也没有用,这只是一个 "desperate" 尝试,因为如果它成功了,我就不会明白为什么要使用前面的点了。
终于找到问题了,椅子和屏风之间几乎和往常一样。
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
...一切都很棒。