2012-01-06 10 views
7

¿Es posible mostrar mensajes flash en Symfony 2 sin redireccionar? ¿O editando archivos core en otro possible solution en grupos de google?Mostrar mensaje flash sin redirección (por ejemplo, hacia adelante). Mensajes que se muestran dos veces

//Symfony\Component\HttpFoundation\Session 
public function setFlash($name, $value, $persist = true) 
{ 
    if (false === $this->started) { 
     $this->start(); 
    } 
    $this->flashes[$name] = $value; 
    if($persist) { 
     unset($this->oldFlashes[$name]); 
    } 
    else { 
     $this->oldFlashes[$name] = $value; 
    } 
} 

ACTUALIZACIÓN

Oh realmente me di cuenta si acabo de utilizar un delantero, mensajes flash mostrarán, pero todavía se mostrarán en la siguiente solicitud

+0

¿Quiere decir que muestra un flash sin refrescar la página? ¿O quiere decir que muestra un flash y refresca la página (la misma ya que no redirecciona)? – swiecki

+1

@swiecki, por lo general, se configuran los mensajes flash y luego se redirige al usuario. Pero si no redirigí al usuario, ¿acabo de usar un reenvío o simplemente quiero mostrar un mensaje en la solicitud actual? –

+1

usa el javascript – Dau

Respuesta

7

por qué el uso de flashes si no lo hace en el interior quiere que se persistan hasta la próxima requ est ?

¿No pudo encontrar otras formas de mostrar comentarios como los parámetros de la plantilla?

Si no es así, se podría añadir esto en sus plantillas (según se está mostrando destellos, como a continuación):

{% if app.session.hasFlash('notice') %} 
<div class="flash-notice"> 
    {{ app.session.flash('notice') }} 
    {{ app.session.removeFlash('notice') }} 
</div> 
{% endif %} 

Así que cualquier plantilla que muestra estos destellos antes de redirección se eliminarán de sesión antes de devolver la respuesta . Creo que es la última mejor solución.

3

voy a hablar en términos generales, porque quieres algo que no sea un estándar listo.

En este momento los mensajes flash de Symfony aparecen después de la solicitud, son de esta manera, y para preservarlo, debe encontrar una alternativa, utilizar una llamada ajax.

Necesita llamar a un script de acción usando una solicitud de ajax, serializando los datos de un formulario, obteniendo el mensaje para devolverlo y luego mostrarlo de la manera que mejor lo haga.

que utilizan http://jquery.bassistance.de/message/demo/ junto con esta llamada jQuery muestra en algunos proyectos, obras buenas:

$.post("/product/saveAjax", { $("#product").serialize() }, 
function(data){ 
    $().message(data.message); 
}, "json"); 

El regreso de guardar un elemento con el Ajax es diferente, en este caso estoy usando codificación de los datos JSON, por lo tanto, si quieres perfom otras acciones que puede inyectar más variables en la matriz JSON, manipularlos función (datos) {...}

Espero que ayude

1

Los mensajes Flash se han creado para vivir la redirección que normalmente se produce después de un éxito en el envío de formularios. Es por eso que viven para 2 solicitudes.

Si desea administrar las notificaciones de usuario soem en su aplicación, haga que un controlador administre un bloque TWIG de notificación en su diseño. Este bloque puede incrustar mensajes flash Y estas notificaciones que maneja con el controlador. Tendrá que configurarlos en su sesión, eliminarlos en su NotificationController y está bien ...

Cuestiones relacionadas