2012-02-08 32 views
18

Symfony2 Kitabının güvenlik bölümünü okuyorum. Her şeyi anlıyorum, ancak bir giriş hatası varsa hata mesajını özelleştirmek istiyorum.Kimlik Doğrulama - Giriş Symfony2 Mesajlar

Bu dosyayı hangi dosyada değiştirebilirim?

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

bana lütfen yardımcı misiniz: Bunu yapmanın en kötü yolu gibi bir şey olacağına inanıyorum

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

:

Bu şablon nedir?


Düzenleme: çalışma var:

Biri bunu yapmaya ihtiyacı durumunda

, sen config.yml

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

bu satırı ekleyin emin olun ve koymak file messages.whateverisyourlanguage.yml, benim durumumda messages.es.yml, bunun gibi satırlar:

Çevrilecek olan metin: Çevirilmiş metin

#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 

Çevirmek istediğiniz metne dikkat edin. Metnin sonunda bir nokta varsa, noktayı koymalısınız. Bunu yapmıyordum ve çalışmıyordu.

footranslate.footranslate

Selamlar farklıdır! :)

cevap

16

translation'u kullanabilirsiniz. Dilinize parameters.iniset locale içinde ve message file oluşturun. Sonra dal şablon kullanılıyor: başka bir olasılık vardır

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

Teşekkürler. Şimdi, giriş formunun atması gereken tüm hata mesajlarını nerede bulabilirim? Mesaj dosyasında görünecek mesajı tam olarak yazmam gerektiğine inanıyorum, bu yüzden hepsini çevirebilirim, ancak hangi mesajların olduklarından emin değilim. –

+2

Sadece birkaç mesaj var: './Vendor/symfony/src/Symfony/Component/Security/Core/Authentication/Provider /' da bulunan dosyalarda istisna mesajlarını kontrol edin. – jkucharovic

+1

Burada da mesajlar var: vendor \ symfony \ src \ Symfony \ Component \ Güvenlik \ Çekirdek \ Kullanıcı \ UserChecker.php –

3

Çevirileri kullanmak istemiyorsanız. Mesajı değiştirebilirsiniz, örneğin:

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