Symfony2 - how to clear / edit a flash message

Miloš picture Miloš · Nov 19, 2013 · Viewed 14.6k times · Source

I am setting a flash message in my controller when rendering a twig template. If there is a post action, I would like to redirect to the same page, but change the flash message.

if ($request->isMethod('POST')) {
    ...
    ...

    $this->get('session')->getFlashBag()->clear(); // Does not work
    $this->get('session')->getFlashBag()->all();   // Does not work

    $request->getSession()->getFlashBag()->set('user-notice', $flash_message2);

    return $this->redirect($request->headers->get('referer'));
}


$this->get('session')->getFlashBag()->set('user-notice', $flash_message1);

return $this->render(....

But the problem is that the displayed flash messages is the $flash_message1, and should be $flash_message2.

When trying to use add instead of set, I can see them both. I tryied to use the Symfony2 clear() and all() functions: http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html but nothing changed.

Any idea? Thank you !!!

Answer

Chaitenya picture Chaitenya · Nov 11, 2014

To clear all flash messages use the following code:

$this->get('session')->getFlashBag()->clear();