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

我想使用闪存消息,因为我喜欢它们的想法,但是它们似乎并不总是对我有用。

这是我的工作流程:

  1. 用户在页面上创建一个组
  2. 我向新组的成员发送电子邮件通知
  3. 我设置了闪存消息“成功!”
  4. 我将用户重定向到新创建的组,并显示“成功!”闪存消息。

问题是在我重定向用户后,闪存消息不再在$ _Session中。为了使这更加奇怪,如果我删除发送电子邮件通知的步骤,则确实有效。 wtf?

还有其他人在Flash消息中遇到类似问题吗?有人对为什么发送电子邮件会影响Flash消息有任何了解吗?

我认为此时,我将坚持使用SetState,并在显示它们后手动将其删除。

有帮助吗?

解决方案

电子邮件是如何发送的?我知道在“调试”模式下使用YII邮件扩展程序(我认为SwiftMailer包装器)使用SetFlash方法,所以也许这以某种方式消除了数组...?

“闪存”变量由cwebuser的init()方法更新,因此,如果有额外的调用cwebuser,则可能是清除闪存变量的原因。

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

如果您安装了Xdebug之类的PHP调试器,我将在GetFlash和SetFlash代码中设置一个断点,并查看这种情况。

祝你好运!

其他提示

现在,您可以将cwebuser组件的属性自动构图设置为false。在这种情况下,仅在使用后才删除闪存消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top