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 !!!
To clear all flash messages use the following code:
$this->get('session')->getFlashBag()->clear();
Use...
$flashBag = $this->get('session')->getFlashBag();
$flashBag->get('user-notice'); // gets message and clears type
$flashBag->set('user-notice', $flash_message2);
... after your isPost()
condition.
One easy way to delete all flash messages is as follows:
// clear all messages from FlashBag
$flashBag = $this->get('session')->getFlashBag();
foreach ($flashBag->keys() as $type) {
$flashBag->set($type, array());
}
This works just fine in Symfony 2.4, and probably all other recent versions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With