1

当我使用标准逻辑时,它可以正常工作,注册没有任何问题。

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">


        {{ form_widget(form) }}

    <div>
        <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</form>

但是,当我手动覆盖这些字段时,它看起来像是在注册,但是,它没有注册,抛出的错误是 CSRF 令牌无效。我是否必须添加其他任何内容才能使此代码正常工作?

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">


        {{ form_widget(form.username) }}
        {{ form_widget(form.email) }}
        {{ form_widget(form.plainPassword.first) }}
        {{ form_widget(form.plainPassword.second) }}
        {{ form_widget(form.name) }}
        {{ form_widget(form.Position) }}
        {{ form_widget(form.Country) }}
        {{ form_widget(form.notification) }}

    <div>
        <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</form>
4

1 回答 1

5

我发现了问题所在,只需要添加

{{ form_rest(form) }}

这会呈现给定表单尚未呈现的所有字段。始终将它放在表单中的某个地方是个好主意,因为它会为您呈现隐藏字段并使您忘记呈现的任何字段更加明显(因为它会为您呈现字段)。

有关更多信息,请参阅此处form_rest()的 symfony 文档

于 2013-01-29T01:43:32.443 回答