2012-02-08 40 views
18

Vì vậy, tôi đang đọc chương bảo mật của Sách Symfony2. Tôi hiểu mọi thứ, nhưng tôi muốn tùy chỉnh thông báo lỗi nếu có lỗi đăng nhập.Tùy chỉnh xác thực - Đăng nhập Tin nhắn Symfony2

Tôi có thể thay đổi tệp này ở định dạng nào?

Đây là mẫu:

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

Tôi tin rằng cách tồi tệ nhất để làm điều này sẽ là một cái gì đó như:

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

Bạn có giúp tôi xin vui lòng?


Edit: tôi nhận nó làm việc:

Trong trường hợp ai đó cần phải làm điều này, hãy chắc chắn bạn thêm dòng này vào config.yml

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

và đưa vào tập tin messages.whateverisyourlanguage.yml, trong trường hợp của tôi messages.es.yml, dòng như thế này:

Văn bản bạn muốn dịch: Văn bản dịch

#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 

Hãy cẩn thận với văn bản bạn muốn dịch. Nếu văn bản có dấu chấm ở cuối, bạn phải đặt dấu chấm. Tôi đã không làm điều đó và nó không hoạt động.

footranslate. khác với footranslate

Chúc mừng! :)

Trả lời

16

Bạn có thể sử dụng translation. Trong parameters.iniset locale cho ngôn ngữ của bạn và tạo message file. Sau đó, trong cành lá mẫu sử dụng:

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

Xin cảm ơn. Bây giờ, nơi tôi có thể tìm thấy tất cả các thông báo lỗi một hình thức đăng nhập nên ném? Tôi tin rằng tôi phải đặt chính xác thông điệp sẽ xuất hiện trên tệp tin nhắn, vì vậy tôi có thể dịch tất cả, nhưng tôi không chắc chắn thư nào là chúng. –

+2

Chỉ có một vài thông báo - kiểm tra các thông báo ngoại lệ trong các tệp nằm trong './Vendor/symfony/src/Symfony/Component/Security/Core/Authentication/Provider /' – jkucharovic

+1

Có các thông báo ở đây: vendor \ symfony \ src \ Symfony \ Component \ Security \ Core \ User \ UserChecker.php –

3

Có một khả năng khác nếu bạn không muốn sử dụng bản dịch. Bạn chỉ có thể thay thế tin nhắn, ví dụ:

{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }} 
Các vấn đề liên quan