Laravel 如何取消设置会话闪存数据?
How does Laravel unset session flash data?
我目前正在尝试实现一种闪存会话数据的方式,类似于 Laravel 处理闪存数据的方式。我知道 Laravel 会覆盖由 session_start.
等函数调用的本机会话方法
他们似乎通过为会话的 open
、read
、write
等创建自定义方法来使用 Symfony 的 Http foundation
包来做到这一点。这是通过使用 session_set_save_handler
:
完成的
http://php.net/manual/en/function.session-set-save-handler.php
通过使用该函数,您可以在启动会话或写入会话时实现开放逻辑。但到目前为止,我无法在 Laravel 代码库中找到直接逻辑,其中 flash 数据被取消设置。
在会话的 write
功能之前取消设置闪存数据是有意义的。这样您就可以为将来的请求取消设置,并确保它只会在您的代码终止时发生。
谁能告诉我 Laravel 如何处理会话闪现消息?
在 Illuminate\Session\Store
class 中,您可以找到存储会话时调用的 save
方法。本质上也就是 session_set_save_handler
。
在那一行调用了 $this->ageFlashData();
方法。
该方法包含以下代码
$this->forget($this->get('_flash.old', []));
$this->put('_flash.old', $this->get('_flash.new', []));
$this->put('_flash.new', []);
因此,在页面调用中,所有闪存数据都存储在 _flash.new
中。
保存会话后,_flash.old
中的所有数据都将被清除,_flash.new
中存储的所有内容都将移至 _flash.old
。 _flash.new
准备为下一次页面调用存储新数据
如果你想维护 flash 消息,例如在 ajax 调用中,你可以在会话存储中使用 reflash()
方法,它将 _flash.old
中的所有内容移回_flash.new
我目前正在尝试实现一种闪存会话数据的方式,类似于 Laravel 处理闪存数据的方式。我知道 Laravel 会覆盖由 session_start.
等函数调用的本机会话方法他们似乎通过为会话的 open
、read
、write
等创建自定义方法来使用 Symfony 的 Http foundation
包来做到这一点。这是通过使用 session_set_save_handler
:
http://php.net/manual/en/function.session-set-save-handler.php
通过使用该函数,您可以在启动会话或写入会话时实现开放逻辑。但到目前为止,我无法在 Laravel 代码库中找到直接逻辑,其中 flash 数据被取消设置。
在会话的 write
功能之前取消设置闪存数据是有意义的。这样您就可以为将来的请求取消设置,并确保它只会在您的代码终止时发生。
谁能告诉我 Laravel 如何处理会话闪现消息?
在 Illuminate\Session\Store
class 中,您可以找到存储会话时调用的 save
方法。本质上也就是 session_set_save_handler
。
在那一行调用了 $this->ageFlashData();
方法。
该方法包含以下代码
$this->forget($this->get('_flash.old', []));
$this->put('_flash.old', $this->get('_flash.new', []));
$this->put('_flash.new', []);
因此,在页面调用中,所有闪存数据都存储在 _flash.new
中。
保存会话后,_flash.old
中的所有数据都将被清除,_flash.new
中存储的所有内容都将移至 _flash.old
。 _flash.new
准备为下一次页面调用存储新数据
如果你想维护 flash 消息,例如在 ajax 调用中,你可以在会话存储中使用 reflash()
方法,它将 _flash.old
中的所有内容移回_flash.new