【问题标题】:Symfony2 FlashBag stopped working after upgrade to 2.4?Symfony2 FlashBag 升级到 2.4 后停止工作?
【发布时间】:2014-01-29 18:02:20
【问题描述】:

在我的控制器中,我使用此代码添加了一条消息并重定向:

$this->get('session')->getFlashBag()->add('success', 'Foo Message');    
return $this->redirect($this->generateUrl('list_route'));

我使用以下代码在模板中显示了消息:

<div id="flashes" class="row-fluid">
  {% for type, flashMessages in app.session.flashbag.all() %}
    {% for flashMessage in flashMessages %}
      <div class="alert alert-{{ type }}">
        <button type="button" class="close" data-dismiss="alert">×</button>
        {{ flashMessage|raw }}
      </div>
    {% endfor %}
  {% endfor %}
</div>

在我从 symfony 2.3 升级到 2.4.1 之前,这一直运行良好。

没有错误,我的日志中没有错误。消息根本不显示,app.session.flashbag 为空。

闪光灯包有什么变化吗?如何解决?

【问题讨论】:

    标签: session symfony


    【解决方案1】:

    您是否偶然使用了Liip\CacheControlBundle?我遇到了完全相同的问题,经过一番挖掘后,我发现这个捆绑包可以清除闪光灯袋。

    config.yml 中查看是否有flash_message_listner: true 行,如果有则将其转至false,然后一切都会恢复正常。

    我这样做是因为我没有足够的代表发表评论。我想Liip\CacheControlBundle 在以前的版本中也会这样做,但我想我会试一试,因为它对我有用。

    我没有获得标准分发包,而是获得了 REST 分发包,它附带了这个包,默认情况下包含 flash_message_listner: true。简单地翻转它,解决了我的问题。

    【讨论】:

    • 是的,我最近添加了 Liip\CacheControlBundle。你可能是对的。我明天测试一下。谢谢:) PS。欢迎来到*! :)
    • 谢谢!我很乐意提供帮助。我绞尽脑汁想办法解决这个问题,终于找到了。我很高兴我能帮助别人解决这个问题! :D
    • 像魅力一样工作!谢谢!花了我几个小时!