有两个步骤可以做到这一点:
1事实证明,我已经使用 Symfony2 中的 FOSUserBundle 在 Remove / Replace the username field with email 中发布了您答案的第一部分。这是删除用户名(假设让它保持沉默!)字段的经典方法,只需FOSUserBundle
. 按照该帖子中提到的所有步骤进行操作。
2使用时需要完成额外的工作PUGXMultiUserBunde
:
#PUGXMultiUserBundle
pugx_multi_user:
db_driver: orm
users:
user_one:
entity:
class: Acme\UserBundle\Entity\UserOne
registration:
form:
type: Acme\UserBundle\Form\Type\UserOneRegistrationFormType
name: fos_user_registration_form
validation_groups: [AcmeRegistration, Default]
template: AcmeUserBundle:Registration:registerUserOne.html.twig
user_two:
entity:
class: Acme\UserBundle\Entity\UserTwo
registration:
form:
type: Acme\UserBundle\Form\Type\UserTwoRegistrationFormType
name: fos_user_registration_form
validation_groups: [AcmeRegistration, Default]
template: AcmeUserBundle:Registration:registerUserTwo.html.twig
应该是这样!
编辑:验证组
AcmeRegistration 将包含 FOSUserBundle 中存在的所有注册约束,您可以删除不想应用的约束(如用户名)。约束将在 userOne 和 userTwo 的公共字段上。
正如您在评论中提到的,您还可以创建:
AcmeUserOneRegistration 将包含特定于 UserOne 注册的所有约束。
AcmeUserTwoRegistration 将包含特定于 UserTwo 注册的所有约束。
在 PUGXMultiUserBundle 配置中,对于 userOne:
validation_groups: [AcmeRegistration,AcmeUserOneRegistration, Default]
对于用户二:
validation_groups: [AcmeRegistration,AcmeUserTwoRegistration, Default]