2015-02-18 29 views
5

Tôi đang cố dịch thông báo flash mà tôi đã gửi, nếu biểu mẫu thành công. Yêu cầu bình thường trông như thế này:Dịch Tin nhắn Flash

$request->getSession()->getFlashBag()->add(
      'notice', 
      'Your E-Mail has been sent.' 
     ); 

Vì vậy, tôi đã cố gắng để dịch các tin nhắn với biến sau đây:

$request->getSession()->getFlashBag()->add(
      'notice', 
      'contact.message.email_has_been_sent' 
     ); 

Sau khi gửi dưới dạng thông điệp cho thấy "contact.message.email_has_been_sent". Vì vậy, nó không tìm thấy bản dịch, nhưng biến là đúng. Tôi đã thử nghiệm nó bên trong một tệp mẫu. Có ai có ý tưởng không, làm thế nào tôi có thể sửa lỗi này? Tôi đã không tìm thấy bất cứ điều gì hữu ích được nêu ra.

Trả lời

7

Giả sử bạn đang ở trong một điều khiển:

$request->getSession()->getFlashBag()->add(
    'notice', 
    $this->get('translator')->trans('contact.message.email_has_been_sent')); 

đọc làm thế nào để xử lý Translations.

+0

Cảm ơn, mà làm việc. :) – Worstkaes

+0

Vì SF 2.8, bạn có thể chỉ cần thực hiện $ this-> addFlash(). –

+0

@VictorToulouse đây không phải là điểm của câu hỏi, nhưng nếu bạn không mở rộng bộ điều khiển cơ sở của FrameworkExtraBundle thì sao? Dù sao tôi đồng ý rằng tôi nên mở rộng câu trả lời rất "cũ" của tôi để bao gồm tất cả các cách được cung cấp bởi khuôn khổ :-) –

1

Ngoài ra, trong cành lá:

{% for flashMessage in app.session.flashbag.get('notice') %} 
    <p>{{ flashMessage|trans }}</p> 
{% endfor %} 
+0

Tôi có xu hướng thích phương pháp này vì nó làm cho gọi dịch giả từ bộ điều khiển không cần thiết, nhưng nó sẽ phức tạp khi bạn cần dịch các tin nhắn với phần giữ chỗ. –

Các vấn đề liên quan