2017-04-30 7 views
0

私はregister_content.html.twigに見られるように、レジスタの形式はform_widgetとsymfonyのフォームテンプレートを使用していることに気づいFOSUserBundleをstydyingたので:FOSUserBundle:ログインするとsymfonyフォームが使用され、ログインはhtmlでレンダリングされるのはなぜですか?

{% 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) }} 

フォーム砦のログインでも見られるように、symfonyのフォームテンプレートを使用することを気にしませんがlogn_content.html.twigに:

{% 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> 

そして私はtheeseフォームの実装の間、このdifferrenceがある理由を学ぶために燃える欲望を持っています。

答えて

1

Symfonyは信用証明書をチェックする別のアクションを使用する可能性があります。そのため、symfonyはフォームの検証と処理(エンティティに格納されたデータ)をformbuilderを使用するときのやり方で使用しません。この場合、formbuilderを使用してHTMLをレンダリングし、HTMLを直接レンダリングするよりも少し遅くする必要があります。

フォームビルダは、検証および/またはcsrf保護が必要なフォームをレンダリングする必要がある場合、またはエンティティをフォームデータとして使用する場合に便利なツールになります。しかし、Symfonyのformbuilderの使用は必須ではなく、必ずしも必要ではありません。たとえば、新しい(POST-)リクエストにつながりませんので、サーバーサイドで処理されないJavascriptアクションしかないフォームフィールドでは、Symfonyのformbuilderを使用する必要はありません。

関連する問題