FOSUserBundle:为什么register使用symfony表单,而login通过html呈现它?
在设置FOSUserBundle的样式时,我注意到register表单使用了form_小部件和Symfony的表单模板,如register_content.html.twig中所示:FOSUserBundle:为什么register使用symfony表单,而login通过html呈现它?,symfony,fosuserbundle,Symfony,Fosuserbundle,在设置FOSUserBundle的样式时,我注意到register表单使用了form_小部件和Symfony的表单模板,如register_content.html.twig中所示: 我非常想了解为什么这些表单的实现之间存在这种差异。一个可能的原因可能是Symfony使用不同的操作来检查凭据,因此Symfony不会像使用表单生成器。因此,在这种情况下,您应该只使用formbuilder来呈现HTML,这使得它比直接呈现HTML要慢一些 当您需要呈现需要验证和/或csrf保护的表单,或将实体用作f
我非常想了解为什么这些表单的实现之间存在这种差异。一个可能的原因可能是Symfony使用不同的操作来检查凭据,因此Symfony不会像使用表单生成器。因此,在这种情况下,您应该只使用formbuilder来呈现HTML,这使得它比直接呈现HTML要慢一些 当您需要呈现需要验证和/或csrf保护的表单,或将实体用作formdata时,formbuilder将成为一个方便的工具。但使用Symfony的formbuilder不是强制性的,也并非总是必需的。例如,只有一些Javascript操作不会导致新的POST请求,因此永远不会在服务器端处理的formfield不需要使用Symfony的formbuilder
{% 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) }}
{% trans_default_domain 'FOSUserBundle' %}
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post">
{% if csrf_token %}
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
{% endif %}
<label for="username">{{ 'security.login.username'|trans }}</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
<label for="password">{{ 'security.login.password'|trans }}</label>
<input type="password" id="password" name="_password" required="required" />
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
</form>