Php Yii中getFlash和setFlash的问题

Php Yii中getFlash和setFlash的问题,php,session,yii,Php,Session,Yii,好吧,我知道我要说的话会非常含糊,但请听我说: 我想使用flash消息,因为我喜欢它们的想法,但它们似乎并不总是适合我 以下是我的工作流程: 用户在页面上创建一个组 我发送电子邮件通知给 新集团成员 我设置了闪光信息“成功!” 我将用户重定向到新创建的组并显示“Success!”闪存消息 问题是在我重定向用户后,flash消息不再在$\u会话中。更奇怪的是,如果我采取发送电子邮件通知的步骤,它确实有效。WTF 是否有其他人在使用flash消息时遇到过类似问题?有人知道为什么发送电子邮件会影响fl

好吧,我知道我要说的话会非常含糊,但请听我说:

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

以下是我的工作流程:

  • 用户在页面上创建一个组
  • 我发送电子邮件通知给 新集团成员
  • 我设置了闪光信息“成功!”
  • 我将用户重定向到新创建的组并显示“Success!”闪存消息
  • 问题是在我重定向用户后,flash消息不再在$\u会话中。更奇怪的是,如果我采取发送电子邮件通知的步骤,它确实有效。WTF

    是否有其他人在使用flash消息时遇到过类似问题?有人知道为什么发送电子邮件会影响flash消息吗


    我想在这一点上,我将坚持使用setState,并在显示它们之后手动删除它。

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

    “flash”变量是由CWebUser的init()方法更新的,因此,如果有额外的调用CWebUser,可能就是清除flash变量的原因

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

    如果您安装了像XDebug这样的PHP调试器,我会在getFlash和setFlash代码中设置一个断点,并查看以这种方式发生的事情


    祝你好运

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

    “flash”变量是由CWebUser的init()方法更新的,因此,如果有额外的调用CWebUser,可能就是清除flash变量的原因

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

    如果您安装了像XDebug这样的PHP调试器,我会在getFlash和setFlash代码中设置一个断点,并查看以这种方式发生的事情


    祝你好运

    现在可以将CWebUser组件的属性autoUpdateFlash设置为false。在这种情况下,只有在使用后才会删除flash消息。

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

    谢谢您的回复。是的,我试过使用普通邮件功能,但仍然不起作用。我在调试模式和常规模式下尝试过,但没有任何运气。我已经检查了我调用的所有方法的源代码,没有一个使用getFlash。我刚刚创建了我自己的getAlert()和setAlert()函数,它们基本上做相同的事情,并且工作正常。谁知道发生了什么…所以你在使用邮件分机?因为它肯定会在MailDebug小部件中调用getFlash。我会调查的。但是听起来你已经有了一个警报功能的解决方案,所以,很好!我正在使用phpmailerv5.0,也就是它的Yii包装。这就是你说的吗?这一点并不重要。我还是喜欢我的变通方法:)谢谢你的回复。是的,我试过使用普通邮件功能,但仍然不起作用。我在调试模式和常规模式下尝试过,但没有任何运气。我已经检查了我调用的所有方法的源代码,没有一个使用getFlash。我刚刚创建了我自己的getAlert()和setAlert()函数,它们基本上做相同的事情,并且工作正常。谁知道发生了什么…所以你在使用邮件分机?因为它肯定会在MailDebug小部件中调用getFlash。我会调查的。但是听起来你已经有了一个警报功能的解决方案,所以,很好!我正在使用phpmailerv5.0,也就是它的Yii包装。这就是你说的吗?这一点并不重要。我更喜欢我的变通方法:)