FOSUserBundle:为什么register使用symfony表单,而login通过html呈现它?

FOSUserBundle:为什么register使用symfony表单,而login通过html呈现它?,symfony,fosuserbundle,Symfony,Fosuserbundle,在设置FOSUserBundle的样式时,我注意到register表单使用了form_小部件和Symfony的表单模板,如register_content.html.twig中所示: 我非常想了解为什么这些表单的实现之间存在这种差异。一个可能的原因可能是Symfony使用不同的操作来检查凭据,因此Symfony不会像使用表单生成器。因此,在这种情况下,您应该只使用formbuilder来呈现HTML,这使得它比直接呈现HTML要慢一些 当您需要呈现需要验证和/或csrf保护的表单,或将实体用作f

在设置FOSUserBundle的样式时,我注意到register表单使用了form_小部件和Symfony的表单模板,如register_content.html.twig中所示:


我非常想了解为什么这些表单的实现之间存在这种差异。

一个可能的原因可能是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>