我尝试对设置的会话闪光做出反应,但总是得到其他路径
Symfony 2.1.3
控制器:
$this->get('session')->getFlashBag()->set('contactActionNoticeError', 'Message not sent');
视图(尝试"旧"和新样式)但我得到bla2
{% if app.session.flashbag.has("contactActionNoticeError") or app.session.hasFlash("contactActionNoticeError") %}
bla1
{% else %}
bla2
{% endif %}
显示所有闪烁时:
{% for label, flashes in app.session.flashbag.all %}
{% for flash in flashes %}
{{ label }} - {{ flash }}
{% endfor %}
{% endfor %}
我明白这个:
contactActionNoticeError - Message not sent
获取闪光袋内容,然后查看它是否为空:
{% set contactActionNoticeError = app.session.flashbag.get("contactActionNoticeError") %}
{% if (contactActionNoticeError is not empty) %}
bla1
{% else %}
bla2
{% endif %}
您仍然可以显示错误(取自文档的代码):
{% for flashMessage in contactActionNoticeError %}
<div>
{{ flashMessage }}
</div>
{% endfor %}
我知道
一个老问题,但是,我想添加一个答案,因为有更好的做事方法。如上所述,默认行为是在访问后取消设置闪光袋(如果想先检查,这不太方便)
// Instead of
{% if app.session.flashBag.get('success') is not empty %}
// Use this instead
{% if app.session.flashBag.peek('success') is not empty %}
此信息的来源:Github FlashBag
这充其量是一个很长的机会,但你可能使用FOSUserBundle
吗?
几个月前,我遇到了类似的问题,FOSUserBundle
将每条闪存消息从会话中拉出,只是为了在登录页面上显示它们。
另外,由于您提到正在使用2.1.3
,会话管理与2.0.x
略有不同:
http://symfony.com/doc/master/components/http_foundation/sessions.html