[英]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代碼庫中找到直接邏輯。
在會話的write
功能之前立即取消設置閃存數據是有意義的。 這樣,您可以為將來的請求取消設置它,並確保它只會在代碼終止時發生。
有人可以告訴我Laravel如何處理會話Flash消息嗎?
在Illuminate\\Session\\Store
類中,您可以找到save
會話時調用的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.old
回_flash.new
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.