我正在尝试使用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 %}
答案 0 :(得分:2)
您需要知道的是,当您收到Flash消息时,它会在自动过期策略(默认策略)中删除。因此,在您执行if
时的模板中,使用get
方法删除了Flash消息...您应该依靠has
方法来检查Flash消息是否存在以及然后使用get
来消费它。