8

小枝テンプレートをレンダリングするときに、コントローラにフラッシュ メッセージを設定しています。投稿アクションがあれば、同じページにリダイレクトしたいのですが、フラッシュメッセージを変更します。

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_message1 であり、$flash_message2 である必要があることです。

set の代わりに add を使用しようとすると、両方が表示されます。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 に答える
2

すべてのフラッシュ メッセージを削除する簡単な方法の 1 つは、次のとおりです。

// 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 に答える