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 に答える