到底是怎么回事,伙计们。
我使用FOSUserBundle的顶部PUGXMultiUserBundle注册并登录两个不同的用户实体。
一切工作开箱:我有我的User类延伸,从FOSUserBundle和我的两个实体的基本用户类既卖方和客户扩展我的User类。
我不希望我的用户输入自己的用户名,电子邮件是首选登录属性。 所以在我的User类的setEmail()和setEmailCanonical()方法,我还设置用户名和usernameCanonical与电子邮件。 这工作得很好,但。
问题是嫩枝。 当我渲染我的表格最后一form_rest(形式),它正确提交,并得到用户的注册。 但是,如果我尝试呈现与form_widget(form._token)的安全令牌,并提交,我以相同的形式结束,控制器没有得到执行,数据库保持不变,不会返回错误。
((我之所以这样做是不显示“用户名”输入框,因为我不要求它我的用户。))
所以,问题是:什么是form_rest()渲染,除了_token隐藏的输入,这是防止我的形式才能正常工作?
是否有什么,我试图完成一个更好的方法?
Thans提前。
有2个步骤来做到这一点:
1原来,我已经张贴你的答案的第一部分中删除/在Symfony2中使用FOSUserBundle电子邮件更换用户名字段 。 这是删除用户名的传统方式(比如说让它沉默!)字段,只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]
对于userTwo:
validation_groups: [AcmeRegistration,AcmeUserTwoRegistration, Default]