8

渲染树枝模板时,我在控制器中设置了一条 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 时,我可以同时看到它们。我尝试使用 Symfony2clear()all()功能:http ://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html但没有任何改变。

任何想法?谢谢 !!!

4

3 回答 3

16

要清除所有闪烁消息,请使用以下代码:

$this->get('session')->getFlashBag()->clear();
于 2014-11-11T11:50:40.527 回答
14

利用...

$flashBag = $this->get('session')->getFlashBag();
$flashBag->get('user-notice'); // gets message and clears type
$flashBag->set('user-notice', $flash_message2);

...在你的isPost()条件之后。

于 2013-11-19T13:52:13.563 回答
2

删除所有Flash 消息的一种简单方法如下:

// clear all messages from FlashBag
$flashBag = $this->get('session')->getFlashBag();
foreach ($flashBag->keys() as $type) {
    $flashBag->set($type, array());
}

这在 Symfony 2.4 以及所有其他最新版本中都可以正常工作。

于 2014-04-04T07:19:33.763 回答