Symfony 2.1 application.session.flashbag.get('quelque chose') retourne la valeur est vide
J'ai un problème avec l'utilisation de app.session.flashbag.get('notice')
.
Dans le contrôleur, je fais
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('SomeBundle:SomeEntity')->find($id);
$editForm = $this->createForm(new SomeEntityType(), $entity);
$editForm->bind($request);
if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();
$flash = $this->get('translator')->trans('Some Entity was successfully updated');
$this->get('session')->getFlashBag()->add('notice', $flash);
return $this->redirect($this->generateUrl('some_entity_edit', array('id' => $id)));
}
En action editaction je suis à obtenir des informations de la session:
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();
$flashes = $this->get('session')->getFlashBag()->get('notice', array());
//...
//...
return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'flashes' => $flashes
);
}
Et je suis en train de le RAMEAU obtenir des informations à partir de la session :
TWIG: {% for flashMessage in app.session.flashbag.get('notice') %}{{ flashMessage }}{% endfor %}
PHP: {% for flashMessage2 in flashes %}{{ flashMessage2 }}{% endfor %}
L'application.session.flashbag.get ("notification") est vide, les bouffées de chaleur a une valeur.
Vous avez des idées, pourquoi je ne peux pas obtenir les données à partir de l'app.session.flashbag.get ("notification")?
- Pourquoi n'utilisez-vous pas
setFlash()
etgetFlash()
? - Parce que ce n'est pas Symfony 2.0, c'est Symfony 2.1 (regardez symfony.com/doc/master/components/http_foundation/sessions.html)
Vous devez vous connecter pour publier un commentaire.
Son comportement normal. Vous accédez flash dans le contrôleur de premier, de sorte qu'il est retourné et annuler ensuite. Lorsque vous accédez à nouveau, puis clé n'existe pas dans flashbag de cette façon est vide.
Voir FlashBag::get sur github
Il existe un moyen facile de gérer (ajouter/affichage) Symfony messages flash avec FlashAlertBundle, il est autonome bundle Symfony2 mis en œuvre avec JavaScript pure, de sorte que vous n'avez pas à vous soucier d'utiliser les librairies JS.
Vous pouvez utiliser le code suivant pour rendre les messages flash sur votre template twig:
Disponibles par le biais de
https://github.com/rasanga/FlashAlertBundle
https://packagist.org/packages/ras/flash-alert-bundle