2012-09-26 23 views
5

Przechodzę z Symfony 2.0 do Symfony 2.1.Flash Message znika w przekierowaniu w Symfony 2.1

mam następujący prosty kod na moim kontrolera:

public function createEntidadeAction() { 
    $this->get('session')->getFlashBag()->set('error', 'message'); 
    return $this->redirect($this->generateUrl('EntidadeBundle_index')); 
} 

Gdybym wygeneruje błąd (na przykład poprzez przepuszczanie złą drogę), sprawdzić na profilera, że ​​wiadomość nie jest lampa błyskowa.

Jeśli jednak pozwolę przekierowaniu powiodło się, wiadomość błyskawiczna zniknie i nic nie zostanie wyświetlone. Mam folloing na moim odpowiedniego szablonu Twig:

{% for flashMessage in app.session.flashbag.get('error') %} 
    <div class="flash-notice"> 
     {{ flashMessage }} 
    </div> 
{% endfor %} 

nie mogę dowiedzieć się tego. czego mi brakuje? Wiadomości Flash powinny trwać po pierwszym przekierowaniu, nie?

Odpowiedz

6

Wymyśliłem to.

Wiadomości Flash nie były wyświetlane z powodu problemów z sesją.

Symfony 2.1 używa teraz session.storage.native domyślnie dla id_pamięci i handler_id.

Proszę sprawdzić, jak rozwiązano ten problem z sesją here.

6

Po pierwsze, spróbuj użyć metody add zamiast set w pendrive. Po drugie, spróbuj tego szablonu, który działa dla mnie:

{% for type, flashMessages in app.session.flashbag.all() %} 
    {% for flashMessage in flashMessages %} 
     <div class="alert alert-{{ type }}"> 
      {{ flashMessage|trans }} 
     </div> 
    {% endfor %} 
{% endfor %} 
+0

Problem nie jest taki, jaki wyświetlam. Wiadomość flash dosłownie zniknie. Jeśli spojrzę na profilera, wiadomość flash nie ma. Zaraz po pierwszym przekierowaniu. Używanie add nie zmieniło tego. Może to konfiguracja php. Mam to w config.yml: 'session: storage_id: session.storage.mock_file', więc może mieć konfiguracje php.ini. – Fonsini

+0

Mock przechowywania plików? Powinien być używany do testowania - nie do prawdziwych sesji. Użyj 'session.storage.native'. –

+0

Problem polega na tym, że potrzebuję lokalnej sesji symfony, aby mieć tę samą ścieżkę zapisu sesji z sesji głównej. A w lokalnej wartości mam ** C:/wamp/www/Symfony/symproject/app/cache/dev/sessions **, a wartość główna mam ** c:/wamp/tmp **. To nie jest w porządku z powodów uwierzytelniania (używam prostego saml php). Co powinienem zrobić w tym przypadku? Nie miałem tego problemu w Symfony 2.0. Lokalna wartość zapisu sesji nie została zmieniona przez symfony. – Fonsini