Yii中getFlash和setFlash的问题

时间:2010-11-01 23:41:47

标签: php session yii

好的,我知道我要说的是超级模糊,但请听我说:

我想使用flash消息,因为我喜欢它们的想法,但它们似乎并不总是适用于我。

这是我的工作流程:

  1. 用户在第A页上创建一个组
  2. 我发送电子邮件通知 新组的成员
  3. 我设置了flash消息“Success!”
  4. 我将用户重定向到新创建的组并显示“成功!” flash message。
  5. 问题是我重定向用户后,flash消息不再出现在$ _SESSION中。为了使这更奇怪,如果我拿出发送电子邮件通知的步骤,它就可以工作了。 WTF?

    有没有其他人遇到类似的Flash消息问题?有没有人知道为什么发送电子邮件会影响Flash消息?

    我认为此时我只是坚持使用setState并在显示后手动删除它。

2 个答案:

答案 0 :(得分:3)

现在您可以将CWebUser组件的属性autoUpdateFlash设置为false。在这种情况下,Flash消息将仅在使用后删除。

答案 1 :(得分:1)

电子邮件是如何发送的?我知道在“调试”模式下使用Yii Mail扩展(我认为是swiftmailer包装器)使用setFlash方法,所以也许这会以某种方式消灭数组......?

“flash”变量由CWebUser的init()方法更新,因此如果对CWebUser进行额外调用,则可能是清除闪存变量的内容。

考虑到你在电子邮件之后设置了闪光灯,我不确定会发生什么。除了“调试模式”之外我唯一的另一个猜测(如果您只是使用PHP邮件方法,这不是问题)是发送邮件会在某处触发额外的重定向。

如果您安装了像XDebug这样的PHP调试器,我会在getFlash和setFlash代码中设置一个断点,然后看一下这种情况。

祝你好运!