2017-03-16 21 views
2

私はSymfony 2.8.16をFOSUserBundle 1.3.7 fosユーザー管理で使用しています。 "app/Resources"には、私のテンプレートでFOSUserBundleテンプレートを追加するための "FOSUserBundle"フォルダがあります。 現在、mywebsite.com/loginルートにログインページがあります。SymfonyでFOSUserBundleを使用して複数のログインフォームを作成する方法

私のウェブサイトの他の公開ページでは、各ページの上部に小さいログインフォームを挿入したいと考えています。

どうすればいいですか?アプリで

/リソース/設定/ routing.ymlのアプリで

index: 
path:  /index 
defaults: { _controller: MyBundle:MyController:MyAction } 

################## 
# FOS User Bundle 
################## 
fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 

/リソース/ FOSUserBundle /ビュー/セキュリティ/ login.html.twig

{% extends ": MyLayout.html.twig" %} 
{% block fos_user_content %} 
{% if error %} 
    <div class="alert alert-danger">{{ error|trans({}, 'FOSUserBundle') }}</div> 
{% endif %} 

<form action="{{ path("fos_user_security_check") }}" method="post"> 
    <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" /> 
    <div class="row"> 
    <div class="form-group col-m-6"> 
     <input type="text" class="_username" id="_username" name="_username" value="{{ last_username }}" placeholder="Email ou identifiant" required="required" /> 
    </div> 
    <div class="form-group col-m-6"> 
     <input type="password" class="_password" id="_password" name="_password" placeholder="Mot de passe" required="required" /> 
    </div> 
    </div> 

    <div class="form_action"> 
    <button type="submit" class="button button-default-outline" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}">Connexion</button> 
    <div class="__sub"> 
     <label class="remember"> 
     <input type="checkbox" id="remember_me" name="_remember_me" checked> {{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }} 
     <span class="separator">|</span> 
     <a href="#" class="forgot">Mot de passe oublié ?</a> 
     </label> 
    </div> 
    </div> 

</form> 
{% endblock fos_user_content %} 

答えて

1

あなたはログインフォームを追加することができますFOSログインチェックに提出するレイアウト上:

<form action="{{ path('fos_user_security_check') }}" method="post"> 
     <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"> 
     <input type="text" name="_username" /> 
     <input type="password" name="_password" /> 
     <input type="checkbox" name="_remember_me" checked /> 
     <input type="submit" value="Submit" /> 
    </form> 

あなたは、もちろん、情報とラベルを追加し、スタイルを変更することができますが、トン彼の入力はそこになければならない。

+0

しかし、FosUserBundleによって生成されたログインフォームには、FOSUserBundleによって生成されたcsrfトークンが含まれています。しかし、この方法では、FOSUserBundleはcsrfトークンを生成させません – dada17xs

+1

FOSUserBundleは、意図した "認証"でcsrfトークンをチェックしてこれが動作するようにします – LP154

+0

これは複数のログインフォームを作成する適切な方法ですか? 他のFOSUserBundleフォームとビューに同じメソッドを使用できますか? – dada17xs

関連する問題