Search code examples
phpsymfonycontrollertwigflash-message

Symfony2 - how to clear / edit a flash message


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 !!!


Solution

  • 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.