2012-09-26 17 views
5

Estoy migrando de Symfony 2.0 a Symfony 2.1.El mensaje flash desaparece al redireccionar en Symfony 2.1

Tengo el siguiente código simple en mi controlador:

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

Si genero un error (por ejemplo, pasando una mala ruta), reviso el perfilador que el mensaje flash está allí.

Sin embargo, si dejo que la redirección tenga éxito, el mensaje flash desaparece y no se muestra nada. Tengo el siguiente en mi plantilla Twig correspondiente:

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

No puedo resolver esto. ¿Qué me estoy perdiendo? Los mensajes flash deberían durar después de la primera redirección, ¿no?

Respuesta

6

lo he descubierto.

Los mensajes flash no aparecían debido a problemas de sesión.

Symfony 2.1 ahora usa session.storage.native para storage_id y handler_id de forma predeterminada.

Compruebe cómo se resolvió el problema de esta sesión here.

6

Primero, intente utilizar el método add en lugar de set en la bolsa de flash. En segundo lugar, tratar esta plantilla que trabaja para mí:

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

El problema no es la forma en que lo estoy mostrando. El mensaje flash literalmente desaparece. Si miro el generador de perfiles, el mensaje flash no está allí. Justo después de la primera redirección. Usar agregar no cambió esto. Tal vez esta es una configuración de php. Tengo esto en la sesión config.yml: ': storage_id: session.storage.mock_file' para que pueda tener las configuraciones de php.ini. – Fonsini

+0

¿Almacenamiento de archivos falso? Se debe usar para probar, no para sesiones reales. Use 'session.storage.native'. –

+0

El problema es que necesito que la sesión de Symfony local tenga la misma ruta de guardado de sesión desde la sesión maestra. Y en el valor Local tengo ** C:/wamp/www/Symfony/symproject/app/cache/dev/sessions ** y el valor maestro tengo ** c:/wamp/tmp **. Esto no está bien por razones de autenticación (estoy usando saml php simple). ¿Qué debería hacer en este caso? No tuve este problema en Symfony 2.0. El valor de la ruta de guardado de la sesión local no fue modificado por Symfony. – Fonsini

Cuestiones relacionadas