2012-02-08 19 views
18

Así que estoy leyendo el capítulo de seguridad de Symfony2 Book. Entiendo todo, pero me gustaría personalizar el mensaje de error si hay un error de inicio de sesión.Personalizar autenticación - Iniciar sesión Symfony2 Mensajes

¿En qué archivo puedo cambiar esto?

Esta es la plantilla:

{% if error %} 
    <div>{{ error.message }}</div> 
{% endif %} 

<form action="{{ path('login_check') }}" method="post"> 
<label for="username">Username:</label> 
<input type="text" id="username" name="_username" value="{{ last_username }}" /> 

<label for="password">Password:</label> 
<input type="password" id="password" name="_password" /> 

{# 
    If you want to control the URL the user is redirected to on success (more details below) 
    <input type="hidden" name="_target_path" value="/account" /> 
#} 

<input type="submit" name="login" /> 

Creo que la peor manera de hacer esto sería algo así como:

if (error.message=="Bad credentials") 
    echo "Los datos son erróneos :)" 

if (error.message==The presented password is invalid") 
    echo "La combinación username/password no es correcta :)" 

¿Quieres que me ayude por favor?


Editar: Lo tengo trabajo:

En caso de que alguien tiene que hacer esto, asegúrese de agregar esta línea a la config.yml

#app/config/config.yml 
framework: 
    translator: { fallback: en } 

y poner en el archivo messages.whateverisyourlanguage.yml, en mi caso messages.es.yml, líneas como esta:

Texto que desea traducir: texto traducido

#Foo\DummyBundle\Resources\translations\messages.es.yml 
The presented password cannot be empty.: El campo contrasena no debe estar vacio 
The presented password is invalid.: Los datos suministrados son incorrectos 
Bad credentials: Los datos suministrados son incorrectos 

Tenga cuidado con el texto que desea traducir. Si el texto tiene un punto al final, debes poner el punto. No estaba haciendo eso y no estaba funcionando.

footranslate. es diferente a footranslate

Saludos! :)

Respuesta

16

Puedes usar translation. En parameters.iniset locale en su idioma y cree message file. Luego, en rama plantilla de uso:

{% if error %} 
    <div class="error">{{ error.message|trans({},'messages') }}</div> 
{% endif %} 
+0

Bien, gracias. Ahora, ¿dónde puedo encontrar todos los mensajes de error que debería arrojar un formulario de inicio de sesión? Creo que tengo que poner exactamente el mensaje que aparecerá en el archivo de mensajes, así que podría traducirlos todos, pero no estoy seguro de cuáles son los mensajes. –

+2

Hay solo unos pocos mensajes: revise los mensajes de excepción en archivos ubicados en './Vendor/symfony/src/Symfony/Component/Security/Core/Authentication/Provider /' – jkucharovic

+1

También hay mensajes aquí: vendor \ symfony \ src \ Symfony \ Component \ Security \ Core \ User \ UserChecker.php –

3

Hay otra posibilidad si no desea utilizar traducciones. Puede simplemente reemplazar el mensaje, por ejemplo:

{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }} 
Cuestiones relacionadas