我正在从Symfony 2.0迁移到Symfony 2.1。
我的控制器上有以下简单代码:
public function createEntidadeAction() {
$this->get('session')->getFlashBag()->set('error', 'message');
return $this->redirect($this->generateUrl('EntidadeBundle_index'));
}
如果我生成错误(例如通过传递错误的路由),我会检查探查器是否有flash消息。
但是,如果我让重定向成功,则flash消息将消失,并且不会显示任何内容。我有相应的Twig模板:
{% for flashMessage in app.session.flashbag.get('error') %}
<div class="flash-notice">
{{ flashMessage }}
</div>
{% endfor %}
我无法弄清楚这一点。我错过了什么? Flash消息应该在第一次重定向后持续,不是吗?
答案 0 :(得分:6)
首先,尝试在闪存包上使用add
方法代替set
。其次,试试这个适用于我的模板:
{% for type, flashMessages in app.session.flashbag.all() %}
{% for flashMessage in flashMessages %}
<div class="alert alert-{{ type }}">
{{ flashMessage|trans }}
</div>
{% endfor %}
{% endfor %}
答案 1 :(得分:6)
我明白了。
由于会话问题,Flash消息未显示。
Symfony 2.1现在默认使用session.storage.native作为storage_id和handler_id。
请检查此会话问题的解决方法here。