Hola amigos, he implementado el conocido bundle para el login & registro de usuarios. La verdad que es una auténtica maravilla, te quita mucho trabajo.
La cuestión, es que me falta un último detalle, y es que las etiquetas y mensajes sean traducidas al castellano.
He definido mi propio bundle 'UserBundle', en el que he sobre escrito las plantillas, aplicándoles estilos personalizados.
Por ejemplo, la plantilla del login, queda así:
src/UserBundle/Resources/views/Security/login.html.twig
Código:
{% extends "::base.html.twig" %}
{% block title %}
{{ parent() }}Login
{% endblock %}
{% block body %}
<!-- Page -->
<div class="row">
<div class="col-md-4">
{% block fos_user_content %}
{% include "UserBundle:Security:login_content.html.twig" %}
{% endblock fos_user_content %}
</div>
</div>
<!-- /.row -->
{% endblock %}
src/UserBundle/Resources/views/Security/login_content.html.twig
Código:
{% trans_default_domain 'FOSUserBundle' %}
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error.messageKey|trans(error.messageData, 'security') }}
</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
<div class="control-group form-group">
<div class="controls">
<label for="username">{{ 'security.login.username'|trans }}</label>
<input class="form-control" type="text" id="username" name="_username" value="{{ last_username }}" required="required" placeholder="Usuario/Email" />
</div>
</div>
<div class="control-group form-group">
<div class="controls">
<label for="password">{{ 'security.login.password'|trans }}</label>
<input class="form-control" type="password" id="password" name="_password" required="required" placeholder="Contraseña" />
</div>
</div>
<div class="control-group form-group">
<div class="controls">
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
<label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
</div>
</div>
<div class="control-group form-group">
<div class="controls">
<input class="btn btn-success" type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
</div>
</div>
</form>
Cómo podéis ver, he mantenido la misma estructura por defecto, solo he añadido etiquetas para aplicar Bootstrap. Sin embargo, me aparecen los mensajes en inglés como 'repeat password' , 'register' y 'Logged in as...'.