Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2会话闪存,在twig-isn';行不通_Php_Symfony_Twig_Symfony 2.1 - Fatal编程技术网

Php Symfony2会话闪存,在twig-isn';行不通

Php Symfony2会话闪存,在twig-isn';行不通,php,symfony,twig,symfony-2.1,Php,Symfony,Twig,Symfony 2.1,我试图在设定的会话闪存上做出反应,但总是得到其他路径 Symfony 2.1.3 控制器: $this->get('session')->getFlashBag()->set('contactActionNoticeError', 'Message not sent'); 查看(尝试了“旧”和“新”样式),但我得到了bla2 {% if app.session.flashbag.has("contactActionNoticeError") or app.session.ha

我试图在设定的会话闪存上做出反应,但总是得到其他路径

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

这充其量只是一个很长的目标,但您是否正在使用
FOSUserBundle

几个月前,我遇到了类似的问题,
FOSUserBundle
从会话中取出每个flash消息,只是为了在登录页面上显示它们

另外,由于您提到您正在使用
2.1.3
,会话管理的方式与
2.0.x
稍有不同:


获取flashbag内容,然后查看它是否为空:

{% set contactActionNoticeError = app.session.flashbag.get("contactActionNoticeError") %}

{% if (contactActionNoticeError is not empty) %}
    bla1
{% else %}
    bla2
{% endif %}
您仍然可以显示错误(代码取自):

{%用于contactActionNoticeError%中的flashMessage}
{{flashMessage}}
{%endfor%}

我知道一个老问题,但我想补充一个答案,因为有更好的方法。如上所述,默认行为是在访问flashbag后将其取消设置(如果希望先检查,则不太方便)


此信息的来源:

不,我没有使用FOSUserBundle。我是如何说的:通过使用
app.session.flashbag.all
反复浏览Flash,我可以看到我的消息。我将您的答案编辑为
设置contactActionNoticeError
。所以这是可行的。但是仍然有一个问题,为什么
.has
.hasFlash
不能工作。您是否只访问一次flashbag?我稍后会访问flashbag,但您认为我可以多次访问flashbar。我改变了我的代码,在开始的时候读出闪蒸包,所以它工作了
{% 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 %}