2017-03-16 3 views
2

Ich benutze Symfony 2.8.16 mit FOSUserBundle 1.3.7 fos Benutzerverwaltung. In "app/Resources" habe ich einen "FOSUserBundle" Ordner, um die FOSUserBundle Vorlage mit meiner Vorlage zu füllen. Derzeit habe ich eine Anmeldeseite auf der mywebsite.com/login Route.Wie man mehrere Anmeldeformulare mit FOSUserBundle in Symfony macht

Auf den anderen öffentlichen Seiten meiner Website möchte ich oben auf jeder Seite ein kleines Anmeldeformular einfügen.

Wie kann ich das tun?

In app/Resources/config/routing.yml

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

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

In app/Resources/FOSUserBundle/views/Sicherheit/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 %} 

Antwort

1

Sie können ein Login-Formular hinzufügen auf der Anlage, die in der fos Login Check übermittelt:

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

Sie können, natürlich, den Stil ändern, Informationen und Etiketten hinzufügen, aber t Seine Eingaben müssen da sein.

+0

Aber ich weiß, dass das von FosUserBundle generierte Login-Formular ein csrf-Token enthält, das von FOSUserBundle generiert wird. Aber diese Methode lässt nicht FOSUserBundle generiert es ist csrf Token – dada17xs

+1

FOSUserBundle überprüft das csrf-Token mit der Absicht "authentifizieren", so wird dies funktionieren – LP154

+0

Ist dies die richtige Methode, um mehrere Login-Formular zu machen? Und kann ich die gleiche Methode für die anderen FOSUserBundle Form und Ansichten verwenden? – dada17xs

Verwandte Themen