Thème de formulaire dans FOSUserBundle
Bonjour à vous !
Dans le Bundle FOSUserBundle, ils ont utilisé plusieurs façon différente d'affichage de formulaire.
Dans login, ils les affiches comme ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| {% extends "FOSUserBundle::layout.html.twig" %}
{% block breadcrumb %}
<span class="divider">/</span> {{ 'layout.login'|trans({}, 'FOSUserBundle') }}
{% endblock %}
{% block fos_user_content %}
{% if error %}
<div>{{ error|trans({}, 'FOSUserBundle') }}</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
<label for="username">{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}</label>
<input type="password" id="password" name="_password" />
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}</label>
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />
</form>
{% endblock fos_user_content %} |
Et dans register comme ça :
Code:
1 2 3 4 5 6 7 8
| {% form_theme form theme %}
<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> |
Tout d'abord, je ne comprends pas comment ça se fait que
Code:
{% form_theme form theme %}
face référence à la page form.html.twig qui se trouve dans views :
Code:
1 2 3 4 5 6
|
{% block field_label %}
{% spaceless %}
<label for="{{ id }}">{{ id|trans([], 'FOSUserBundle') }}</label>
{% endspaceless %}
{% endblock field_label %} |
Avez vous une explication pour ça ???
Bon, j'ai fait abstraction et j'ai commencé à codé mon propre thème dans ce page (que j'ai bien sur préalablement copier dans mon propre dossier views). Une fois le thème terminé, il s'affiche parfaitement dans ma page register.
J'aimerais donc l'afficher dans ma page login aussi.. Mais comment je peux faire ? J'ai essayé avec le même code , c'est à dire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| {% extends "ExoProgUserBundle::layout.html.twig" %}
{% form_theme form theme %}
{% block fos_user_content %}
{% if error %}
<div>{{ error|trans({}, 'FOSUserBundle') }}</div>
{% endif %}
<form class="form-horizontal" action="{{ path("fos_user_security_check") }}" method="post">
<fieldset>
<legend>Connexion</legend>
{{ form_widget(form) }}
<div class="form-actions">
<input class="btn btn-primary" type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}" />
</div>
</fieldset>
</form>
{% endblock fos_user_content %} |
Mais j'obtiens le message suivant :
Code:
Variable "form" does not exist in FOSUserBundle:Security:login.html.twig at line 3
J'ai aussi essayé avec
Code:
{% form_theme form 'nomdubundleBundle:dossier:theme.html.twig' %}
Mais rien n'y fait...
Et si je modifie l'affichage du register en mettant de nom complet (comme ci dessous) au lieu de theme (ou il sort ???), j'ai le meme message...
Pouvez vous s'il vous plait m'éclairer ???
Merci d'avance !