2015-02-18 46 views
5

Próbuję przetłumaczyć wysłaną wiadomość flash, jeśli formularz jest skuteczny. Normalne zapytanie wygląda następująco:Przetłumacz wiadomość Flash

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

Więc starałem się przetłumaczyć komunikat o następującej zmiennej:

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

Po wysłaniu formularza komunikat pokazuje „contact.message.email_has_been_sent”. Więc nie znalazło tłumaczenia, ale zmienna ma rację. Przetestowałem go w pliku szablonu. Ma ktoś pomysł, jak mogę to naprawić? Nie znalazłem jeszcze niczego przydatnego.

Odpowiedz

7

Zakładając, że jesteś w kontrolerze:

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

Przeczytaj, jak radzić Translations.

+0

Dzięki, że działa. :) – Worstkaes

+0

Od SF 2.8, możesz po prostu zrobić $ this-> addFlash(). –

+0

@VictorToulouse nie jest to kwestia pytania, ale co się stanie, jeśli nie rozszerzysz podstawowego kontrolera FrameworkExtraBundle? W każdym razie zgadzam się, że powinienem rozwinąć moją bardzo "starą" odpowiedź, aby objąć całą drogę oferowaną przez framework :-) –

1

Alternatywnie, w gałązce:

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

Wolę tę metodę, ponieważ wywoływanie tłumacza ze sterownika jest niepotrzebne, ale staje się skomplikowane, kiedy trzeba tłumaczyć wiadomości z symbolami zastępczymi. –