好的,我知道我要说的是超级模糊,但请听我说:
我想使用flash消息,因为我喜欢它们的想法,但它们似乎并不总是适用于我。
这是我的工作流程:
问题是我重定向用户后,flash消息不再出现在$ _SESSION中。为了使这更奇怪,如果我拿出发送电子邮件通知的步骤,它就可以工作了。 WTF?
有没有其他人遇到类似的Flash消息问题?有没有人知道为什么发送电子邮件会影响Flash消息?
我认为此时我只是坚持使用setState并在显示后手动删除它。
答案 0 :(得分:3)
现在您可以将CWebUser组件的属性autoUpdateFlash设置为false。在这种情况下,Flash消息将仅在使用后删除。
答案 1 :(得分:1)
电子邮件是如何发送的?我知道在“调试”模式下使用Yii Mail扩展(我认为是swiftmailer包装器)使用setFlash方法,所以也许这会以某种方式消灭数组......?
“flash”变量由CWebUser的init()方法更新,因此如果对CWebUser进行额外调用,则可能是清除闪存变量的内容。
考虑到你在电子邮件之后设置了闪光灯,我不确定会发生什么。除了“调试模式”之外我唯一的另一个猜测(如果您只是使用PHP邮件方法,这不是问题)是发送邮件会在某处触发额外的重定向。
如果您安装了像XDebug这样的PHP调试器,我会在getFlash和setFlash代码中设置一个断点,然后看一下这种情况。
祝你好运!