渲染树枝模板时,我在控制器中设置了一条flash消息。 如果有帖子操作,我想重定向到同一页面,但更改Flash消息。
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(....
但问题是显示的flash消息是$ flash_message1,应该是$ flash_message2。
当尝试使用add而不是set时,我可以看到它们。
我尝试使用Symfony2 clear()
和all()
函数:http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html但没有任何改变。
有什么想法吗?谢谢!!!
答案 0 :(得分:13)
要清除所有Flash消息,请使用以下代码:
$this->get('session')->getFlashBag()->clear();
答案 1 :(得分:12)
使用...
$flashBag = $this->get('session')->getFlashBag();
$flashBag->get('user-notice'); // gets message and clears type
$flashBag->set('user-notice', $flash_message2);
...在isPost()
条件之后。
答案 2 :(得分:3)
删除所有 Flash消息的一种简单方法如下:
// clear all messages from FlashBag
$flashBag = $this->get('session')->getFlashBag();
foreach ($flashBag->keys() as $type) {
$flashBag->set($type, array());
}
这在Symfony 2.4中运行得很好,可能还有所有其他最新版本。