SF2 Flash消息未显示在FlashBag中

时间:2014-04-28 17:01:11

标签: php session symfony flash-message

我正在尝试使用FlashBagInterface向屏幕输出flash消息,但是我没有运气这样做。

这是我当前的设置,因为您可以看到我的控制器设置了消息,然后我的Twig模板正在尝试输出它。在实践中,我只会在此页面上显示一条消息,因此可能不需要for循环,但我不明白为什么此代码对我不起作用。

我没有收到任何错误,只是没有输出到屏幕上。

另外,如果我在die的代码中$message,我会收到我想要展示的消息。

在我的控制器中:

$message = $this->get('translator')->trans('ContactThanksMessage');
$this->get('session')->getFlashBag()->set('contact_thanks', array('message' => $message));
return $this->redirect($this->generateUrl("ayrshireminis_contact"));

在我的Twig模板中:

{% if app.session.flashbag.get('contact_thanks') %}
    {% for flashMessage in app.session.flashbag.get('contact_thanks') %}
       <p>{{ flashMessage }}</p>
    {% endfor %}
{% else %}

1 个答案:

答案 0 :(得分:2)

您需要知道的是,当您收到Flash消息时,它会在自动过期策略(默认策略)中删除。因此,在您执行if时的模板中,使用get方法删除了Flash消息...您应该依靠has方法来检查Flash消息是否存在以及然后使用get来消费它。