FOSUserBundle分支表单提交不是预期行为



怎么了,伙计们。

我使用FOSUserBundle之上的PUGXMultiUserBundle来注册和登录两个不同的用户实体。

一切都是开箱即用的:我的User类扩展了FOSUserBundle中的基本User类,我的Seller和Customer的两个实体扩展了我的User类别。

我不希望我的用户输入他们的用户名,因为电子邮件是首选的登录属性。因此,在User类的setEmail()和setEmailCanonical()方法中,我还使用电子邮件设置了username和usernameCanonical。这很好用,但是。

问题出在Twig身上。当我在表单末尾呈现form_rest(表单)时,它会正确提交,并且用户会注册。但是,如果我尝试使用form_widget(form.token)呈现安全令牌并提交,我最终会使用相同的表单,控制器不会被执行,数据库保持不变,错误不会返回。

(我这样做的原因是不显示"用户名"输入框,因为我不需要向我的用户显示。)

所以问题是:除了_token隐藏输入之外,form_rest()还呈现了什么,这阻碍了我的表单正常工作?

有没有更好的方法来实现我想要实现的目标?

提前感谢。

要做到这一点,需要两个步骤:

1事实证明,我已经使用Symfony2中的FOSUserBundle在Remove/Replacetheusername字段中发布了您答案的第一部分。这是删除username(让它静音!)字段的经典方法,只使用FOSUserBundle。按照帖子中提到的所有步骤操作。

2使用PUGXMultiUserBunde:时需要做额外的工作

#PUGXMultiUserBundle
pugx_multi_user:
db_driver: orm
users:
user_one:
entity:
class: AcmeUserBundleEntityUserOne
registration:
form:
type: AcmeUserBundleFormTypeUserOneRegistrationFormType
name: fos_user_registration_form
validation_groups:  [AcmeRegistration, Default]
template: AcmeUserBundle:Registration:registerUserOne.html.twig
user_two:
entity:
class: AcmeUserBundleEntityUserTwo
registration:
form:
type: AcmeUserBundleFormTypeUserTwoRegistrationFormType
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]

相关内容

  • 没有找到相关文章

最新更新