Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel如何取消会话闪存数据?_Php_Laravel_Session_Laravel 5.3_Flash Message - Fatal编程技术网

Php Laravel如何取消会话闪存数据?

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功能开始之前取消

我目前正在尝试实现一种闪存会话数据的方法,类似于Laravel处理闪存数据的方法。我知道Laravel重写了session_start等函数调用的本机会话方法

他们似乎通过Symfony的
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
方法