1

我正在尝试使用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 %}
4

1 回答 1

2

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

于 2014-04-28T17:14:33.413 回答