2012-02-08 5 views
18

Quindi sto leggendo il capitolo sulla sicurezza di Symfony2 Book. Capisco tutto, ma mi piacerebbe personalizzare il messaggio di errore se c'è un errore di accesso.Personalizza autenticazione - Accedi Messaggi Symfony2

In quale file posso modificare questo?

Questo è il modello:

{% 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" /> 

Credo che il modo peggiore di fare questo sarebbe qualcosa di simile:

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 :)" 

vuoi aiutarmi per favore?


Edit: ho capito di lavoro:

Nel caso in cui qualcuno ha bisogno di fare questo, essere sicuri di aggiungere questa linea al config.yml

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

e messo in file messages.whateverisyourlanguage.yml, nel mio caso messages.es.yml, righe come questa:

Testo che si desidera tradurre: Testo tradotto

#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 

Fare attenzione al testo che si desidera tradurre. Se il testo ha un punto alla fine, devi mettere il punto. Non lo stavo facendo e non funzionava.

footranslate. è diverso da quello footranslate

Saluti! :)

risposta

16

È possibile utilizzare translation. In parameters.iniset locale nella tua lingua e crea message file. Poi, nel ramoscello modello di utilizzo:

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

Bene, grazie. Ora, dove posso trovare tutti i messaggi di errore che dovrebbe essere generato da un modulo di accesso? Credo di dover inserire esattamente il messaggio che apparirà sul file del messaggio, quindi potrei tradurli tutti, ma non sono sicuro di quali siano i messaggi. –

+2

Ci sono solo pochi messaggi - controlla i messaggi di eccezione nei file situati in './Vendor/symfony/src/Symfony/Component/Security/Core/Authentication/Provider /' – jkucharovic

+1

Ci sono anche messaggi qui: vendor \ symfony \ src \ symfony \ Component \ Security \ core \ User \ UserChecker.php –

3

C'è un'altra possibilità se non si desidera utilizzare traduzioni. Puoi semplicemente sostituire il messaggio, ad esempio:

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