Php Laravel如何取消会话闪存数据?
我目前正在尝试实现一种闪存会话数据的方法,类似于Laravel处理闪存数据的方法。我知道Laravel重写了session_start等函数调用的本机会话方法 他们似乎通过Symfony的Php Laravel如何取消会话闪存数据?,php,laravel,session,laravel-5.3,flash-message,Php,Laravel,Session,Laravel 5.3,Flash Message,我目前正在尝试实现一种闪存会话数据的方法,类似于Laravel处理闪存数据的方法。我知道Laravel重写了session_start等函数调用的本机会话方法 他们似乎通过Symfony的httpfoundation包来实现这一点,为会话的open、read、write等创建自定义方法。这是通过使用会话设置保存处理程序来完成的: 通过使用该函数,您可以在启动会话或写入会话时实现开放逻辑。但到目前为止,我无法在Laravel代码库中找到闪存数据未设置的直接逻辑 在会话的write功能开始之前取消
httpfoundation
包来实现这一点,为会话的open
、read
、write
等创建自定义方法。这是通过使用会话设置保存处理程序来完成的:
通过使用该函数,您可以在启动会话或写入会话时实现开放逻辑。但到目前为止,我无法在Laravel代码库中找到闪存数据未设置的直接逻辑
在会话的write
功能开始之前取消设置闪存数据是有意义的。这样,您可以为将来的请求取消设置它,并确保它只在代码终止时发生
有谁能告诉我Laravel是如何处理会话闪存消息的吗?在illighted\session\Store
类中,您可以找到存储会话时调用的save
方法。本质上也就是会话\u设置\u保存\u处理程序
在那一行,$this->ageFlashData()调用代码>方法
该方法包含以下代码
$this->forget($this->get('_flash.old', []));
$this->put('_flash.old', $this->get('_flash.new', []));
$this->put('_flash.new', []);
因此,在页面调用中,所有闪存数据都存储在\u flash.new
中。
当会话保存在\u flash中时,所有数据都将被清除,所有存储在\u flash中的数据都将被清除。新的将被移动到\u flash.old
。\u flash.new
准备为下一页调用存储新数据
如果您想维护flash消息,例如在ajax调用中,您可以使用会话存储中的reflash()
方法,将\u flash.old
中的所有内容移回\u flash.new
在发出ajax请求或重定向时如何?Laravel是否也会将闪存数据移到旧数据中,或者是否对此进行了检查?我想如果ajax请求或重定向之类的东西导致flash数据未设置,您可能会出现不必要的行为。在ajax调用中,flash数据会移动到_flash.old。您可以在StartSession中间件中看到这一点。如果要在下一个请求中保持闪存数据的活动状态,可以使用reflash
方法