FOSUserBundle:为什么注册使用symfony表单,而登录通过html呈现?

时间:2017-04-30 15:30:20

标签: symfony fosuserbundle

当我正在研究FOSUserBundle时,我注意到注册表单使用了r.addChildEventListener(new ChildEventListener() { ... 和Symfony的表单模板,如form_widget中所示:

register_content.html.twig

虽然登录表单甚至无法使用symfony的表单模板,如{% trans_default_domain 'FOSUserBundle' %} {{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }} {{ form_widget(form) }} <div> <input type="submit" value="{{ 'registration.submit'|trans }}" /> </div> {{ form_end(form) }} 所示:

logn_content.html.twig

我渴望了解为什么在这些形式的实施之间存在这种差异。

1 个答案:

答案 0 :(得分:1)

一个可能的原因可能是Symfony使用不同的操作来检查凭据,因此Symfony不会像使用formbuilder时那样使用表单验证和处理(存储在实体中的数据)。因此,在这种情况下,您应该仅使用formbuilder来呈现HTML,这使得它比直接呈现HTML要慢一些。

当您需要渲染需要验证和/或csrf保护的表单或将实体用作formdata时,formbuilder会成为一个方便的工具。但是使用Symfony的formbuilder不是强制性的,并不总是需要。例如,只有一些Javascript操作的表单字段不会导致新的(POST-)请求,因此从不在服务器端处理,因此不需要使用Symfony的formbuilder。