MENSAJE FLASH QUE DURE UNOS SEGUNDOS SÓLO

249 views
Skip to first unread message

Juan Manuel Rey

unread,
Apr 11, 2012, 1:22:57 PM4/11/12
to symfony-es
Hola a todos, antes de nada, gracías por leer este mensaje. Les
comento, estoy haciendo una app, en la cual después de crear una
incidencia me salte un mensaje flash que dice:"Nueva incidencia creada
con éxito, se intentará resolver en las próximas horas. " me sale bien
pero claro se queda de forma estática hasta que se hace otra acción.
Me gustaría saber si hay alguna forma para que este mensaje flash solo
estuviera unos pocos segundos ... y luego se quitase. El código es
este:

class DefaultController extends Controller
{

public function incidenciaNuevaAction()
{
$peticion = $this->getRequest();

$incidencia = new Incidencia();
$formulario = $this->createForm(new IncidenciaType(),
$incidencia);

if ($peticion->getMethod() == 'POST') {
$formulario->bindRequest($peticion);

if ($formulario->isValid()) {
$incidencia->setResuelta(false);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($incidencia);
$em->flush();
$this->get('session')->setFlash('info',
'Nueva incidencia creada con éxito, se intentará
resolver en las próximas horas.'
);


return $this->redirect($this-
>generateUrl('usuario_incidencias'));
}
}
return $this-
>render('IncidenciaBundle:Default:formulario.html.twig',array(
'accion' => 'crear',
'formulario' => $formulario->createView()
));
}


Un saludo, gracias.

Carlos Zuniga

unread,
Apr 11, 2012, 3:02:15 PM4/11/12
to symfo...@googlegroups.com
2012/4/11 Juan Manuel Rey <juanmanu...@gmail.com>:

Lo puedes quitar mediante javascript. Puedes poner una función en un
setTimeOut que borre el elemento donde se encuentra tu mensaje o use
jquery para hacerle un fade out o algo parecido.

Saludos
--
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.

German Macas

unread,
Apr 11, 2012, 3:32:58 PM4/11/12
to symfo...@googlegroups.com
Que tal, lo Deberias hacer con jquery:
En tu twig:
{% if app.session.hasFlash('info') %}
$("#info").fadeIn('slow').delay(5000).fadeOut('slow');
{% endif %}


Att. German Macas
@gerod006



> Date: Wed, 11 Apr 2012 10:22:57 -0700
> Subject: [symfony-es] MENSAJE FLASH QUE DURE UNOS SEGUNDOS SÓLO
> From: juanmanu...@gmail.com
> To: symfo...@googlegroups.com
> --
> Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
> Para publicar en este grupo, envía un email a symfo...@googlegroups.com
> Para darte de baja, envía un email a symfony-es+...@googlegroups.com
> El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

Danny alfonzo Viana perez

unread,
Apr 12, 2012, 10:28:54 AM4/12/12
to symfo...@googlegroups.com
yo lo tengo asi

1-. en un archivo ini.js:
$(document).ready(function(){
$('.info').delay(3000).slideUp('slow');
});

2.- en el style.css:

.info{
padding:10px 2px; 
margin:10px auto; 
width:450px;
background:#ffc;
border:1px solid #A2D246; 
text-align:center;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
color:#C9591C;
}

luego en la plantilla:
{% if app.session.hasFlash('info') %}
<center class="info">{{ app.session.getFlash('info') }}</center>
{% endif %}


> Para darte de baja, envía un email a symfony-es+unsubscribe@googlegroups.com

Juan Manuel Rey

unread,
Apr 13, 2012, 7:02:09 AM4/13/12
to symfony-es
Muchas gracias a todos!!!!!! Gran comunidad la de symfony

On 12 abr, 16:28, Danny alfonzo Viana perez <dannyfilth2...@gmail.com>
wrote:
> > > From: juanmanuelrey...@gmail.com
> > symfony-es+...@googlegroups.com

Juan Manuel Rey

unread,
Apr 14, 2012, 7:30:45 AM4/14/12
to symfony-es
Hola de nuevo, probe pero sigue sin salirme ... no se quita el flash,
he probado las 3 opciones que me habeís puesto pero nada, yo creo que
igual no estan bien importadas las librerias o algo.

//para cargar jquerry y el archivo ini.js pongo en la plantilla
frontend2.html.twig ..

{% block javascripts %}
{% javascripts '@EspacioBundle/Resources/public/js/frontend.js'
'@EspacioBundle/Resources/public/js/ini.js'
output='js/frontend.js' %}
<script src="{{ asset('bundles/espacio/js/frontend.js') }}" type="text/
javascript"></script>
<script src="{{ asset('bundles/sonatajquery/jquery-1.7.1.js') }}"
type="text/javascript"></script>
<script src="{{ asset('bundles/sonatajquery/jquery-ui-1.8.17.js') }}"
type="text/javascript"></script>
<script src="{{ asset('bundles/sonatajquery/jquery-ui-i18n.js') }}"
type="text/javascript"></script>
{% endjavascripts %}
{% endblock %}
...

en style.css puse lo que me comentastéis
.inci{
padding:10px 2px;
margin:10px auto;
width:450px;
background:#ffc;
border:1px solid #A2D246;
text-align:center;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
color:#C9591C;

}

y en la plantilla incidencias.html.twig

{% extends '::frontend2.html.twig' %}

{% block title %}Incidencias de la comunidad{% endblock %}
{% block id 'compras' %}


{% block article %}
<h1>{{ block('title') }}</h1>

{% if app.session.hasFlash('inci') %}
<center class="inci">
{{ app.session.getFlash('inci') }}
</center>
{% endif %}

{% endblock %}



Por lo tanto la cosa es.. en el controlador me salta el mensaje flash
inci, este llega a incidencias.html.twig , en incidencias tengo {%
extends '::frontend2.html.twig' %} , esto en teoría hereda lo que
tengo en frontend2 que es las librerias para poder usar jquerry y
también ini.js, donde tengo el código para que se quite pasado un
tiempo. Entonces en incidencias.html.twig con..


{% if app.session.hasFlash('inci') %}
<center class="inci">
{{ app.session.getFlash('inci') }}
</center>
{% endif %}

esto me saca el mensaje en la plantilla, pero luego no se quita, es
como si el ini.js no lo leyerá .. y debería porque está importado y
demás..

Juan Manuel Rey

unread,
Apr 14, 2012, 10:53:32 AM4/14/12
to symfony-es
SOLUCIONADO, estaba usando SOnataJQuery, pero no iba, me cree un nuevo
Bundle JQueryBundle, y meti la librería y ya funciona, gracias a
todos.
Reply all
Reply to author
Forward
0 new messages