Php 我是不是用错了Symfony flash变量?

Php 我是不是用错了Symfony flash变量?,php,symfony1,Php,Symfony1,在一个动作中,我为用户设置了一些反馈: $this->getUser()->setFlash('message', array( "type" => "notice", "content" => "Well done buddy, you did it." )); $this->redirect('home/index'); 在视图中,我只使用以下代码: <?php if ($sf_user->hasFlash

在一个动作中,我为用户设置了一些反馈:

    $this->getUser()->setFlash('message', array(
    "type" => "notice",
    "content" => "Well done buddy, you did it."
    ));

    $this->redirect('home/index');
在视图中,我只使用以下代码:

<?php if ($sf_user->hasFlash('message')): $message = $sf_user->getFlash('message') ?>
  <p class="<?php echo $message["type"] ?>" ><?php echo $message["content"]?></p>
<?php endif; ?>


Symfony中的闪烁用于在页面上精确显示一次响应,即“闪烁”消息。如果页面被刷新,该闪存将不再存在

因此,假设用户提交了一个表单,并且该操作执行以下代码

$this->getUser()->setFlash( 'message', 'Some message here' );
该视图有以下内容

# Note: getFlash returns "" if flash is not set
echo $sf_user->getFlash('message');
然后,在提交表单之后,该用户向视图发出的第一个请求,因此设置flash将导致getFlash返回“此处的一些消息”并删除/取消设置flash。因此,该用户对同一消息的任何请求现在都将返回一个空字符串


这意味着,一个闪存只支持一个请求。在与表单相同的页面上显示表单响应是一种很好的方法。

使用两个
setFlash
字符串(而不是数组)尝试相同的方法。我想这会管用的。在模板中访问Symfony时,Symfony正在转义数组。尝试
var\u dump($sf\u user->getFlash('message')确定你得到了什么。

我知道flash是星历变量。我不是说它能工作一次,然后我重新加载网页,它就不能工作了。我的意思是它曾经按预期的方式工作过一次,然后整个麦加尼斯不再工作了。也许我改变了一些事情,但我不喜欢。我理解这种混乱,所以我删除了这个句子,以避免这个答案被重复。