php app/console router:debug
fos_user_security_login ANY ANY ANY /login fos_user_security_check POST ANY ANY /login_check fos_user_security_logout ANY ANY ANY /logout fos_user_profile_show GET ANY ANY /profile/ fos_user_profile_edit ANY ANY ANY /profile/edit fos_user_registration_register ANY ANY ANY /register/ fos_user_registration_check_email GET ANY ANY /register/check-email fos_user_registration_confirm GET ANY ANY /register/confirm/{token} fos_user_registration_confirmed GET ANY ANY /register/confirmed fos_user_resetting_request GET ANY ANY /resetting/request fos_user_resetting_send_email POST ANY ANY /resetting/send-email fos_user_resetting_check_email GET ANY ANY /resetting/check-email fos_user_resetting_reset GET|POST ANY ANY /resetting/reset/{token} fos_user_change_password GET|POST ANY ANY /profile/change-password
Los usuarios pueden:
logguearse, desloggearse, ver su perfil, editar su perfil, registrarse, solicitar cambiar su contraseña, cambiar su contraseña, etc.
pero, a todas estas páginas les falta estilos.
Primero comenzaremos con la página de registro, si vemos el archivo:
vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/views/Registration/register.html.twig
veremos que su contenido es simple:
{% extends "FOSUserBundle::layout.html.twig" %} {% block fos_user_content %} {% include "FOSUserBundle:Registration:register_content.html.twig" %} {% endblock fos_user_content %}
sólo hereda del layout e incluye la plantilla register_content, esto ocurre en todas las plantillas a sustituir, por lo que haremos será solo sustituir las plantillas que terminen en "_content.html.twig"
así que para copiar el archivo register_content.html.twig a nuestro bundle hijo, primero creamos la carpeta "Registration" para poder alojarlo.
mkdir src/Peteramas/MyFOSUserBundle/Resources/views/Registration/ cp vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/views/Registration/register_content.html.twig src/Peteramas/MyFOSUserBundle/Resources/views/Registration/
y luego cambiamos su contenido de:
{% trans_default_domain 'FOSUserBundle' %} <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 }}" /> </div> </form>
a esto:
{% extends 'PetramasMainBundle::layout.html.twig' %} {% block content -%} <form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="form-horizontal fos_user_registration_register" role="form"> {{ form_errors(form) }} <div class="form-group{% if form.email.vars.errors[0].message is defined %} has-error{% endif %}"> {{ form_label(form.email, null, {'label_attr': {'class': 'col-sm-2 control-label'}}) }} <div class="col-sm-10"> {{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }} {% if form.email.vars.errors[0].message is defined %} <span class="help-block"> {{ form.email.vars.errors[0].message }} </span> {% endif %} </div> </div> <div class="form-group{% if form.username.vars.errors[0].message is defined %} has-error{% endif %}"> {{ form_label(form.username, null, {'label_attr': {'class': 'col-sm-2 control-label'}}) }} <div class="col-sm-10"> {{ form_widget(form.username, {'attr': {'class': 'form-control'}}) }} {% if form.username.vars.errors[0].message is defined %} <span class="help-block"> {{ form.username.vars.errors[0].message }} </span> {% endif %} </div> </div> <div class="form-group{% if form.plainPassword.first.vars.errors[0].message is defined %} has-error{% endif %}"> {{ form_label(form.plainPassword.first, null, {'label_attr': {'class': 'col-sm-2 control-label'}}) }} <div class="col-sm-10"> {{ form_widget(form.plainPassword.first, {'attr': {'class': 'form-control'}}) }} {% if form.plainPassword.first.vars.errors[0].message is defined %} <span class="help-block"> {{ form.plainPassword.first.vars.errors[0].message }} </span> {% endif %} </div> </div> <div class="form-group{% if form.plainPassword.second.vars.errors[0].message is defined %} has-error{% endif %}"> {{ form_label(form.plainPassword.second, null, {'label_attr': {'class': 'col-sm-2 control-label'}}) }} <div class="col-sm-10"> {{ form_widget(form.plainPassword.second, {'attr': {'class': 'form-control'}}) }} {% if form.plainPassword.second.vars.errors[0].message is defined %} <span class="help-block"> {{ form.plainPassword.second.vars.errors[0].message }} </span> {% endif %} </div> </div> <button class="btn btn-primary" type="submit">{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}</button> {{ form_end(form) }} {% endblock %}
Hemos hecho uso de lo aprendido en las entradas anteriores, ya que al devolver un error, FOSUserBundle, nos mostrará bien formateado y con estilos bootstrap, incluso pone todo el label y el input de rojo al submitear un campo inválido.
Para acabar con Registration, hacemos lo mismo con la confirmación del registro:
copiamos el archivo confirmed.html.twig
cp vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/views/Registration/confirmed.html.twig src/Peteramas/MyFOSUserBundle/Resources/views/Registration/
y modificamos su contenido de esto:
{% extends "FOSUserBundle::layout.html.twig" %} {% trans_default_domain 'FOSUserBundle' %} {% block fos_user_content %} <p>{{ 'registration.confirmed'|trans({'%username%': user.username}) }}</p> {% if app.session is not empty %} {% set targetUrl = app.session.get('_security.' ~ app.security.token.providerKey ~ '.target_path') %} {% if targetUrl is not empty %}<p><a href="{{ targetUrl }}">{{ 'registration.back'|trans }}</a></p>{% endif %} {% endif %} {% endblock fos_user_content %}
{% extends 'PetramasMainBundle::layout.html.twig' %} {% block content -%} {% trans_default_domain 'FOSUserBundle' %} <h3>{{ 'registration.confirmed'|trans({'%username%': user.username}) }}</h3> {% if app.session is not empty %} {% set targetUrl = app.session.get('_security.' ~ app.security.token.providerKey ~ '.target_path') %} {% if targetUrl is not empty %} <p> <a class="btn btn-primary" href="{{ targetUrl }}"> {{ 'registration.back'|trans({}, 'FOSUserBundle') }} </a> </p> {% endif %} {% endif %} {% endblock %}
No hay comentarios.:
Publicar un comentario
Puedes comentar como te gustaría que comenten de ti.