簡體   English   中英

Laravel如何取消會話閃存數據的設置?

[英]How does Laravel unset session flash data?

我目前正在嘗試實現一種類似於Laravel處理閃存數據的方法來刷新會話數據。 我知道Laravel會覆蓋由session_start之類的函數調用的本機會話方法。

他們似乎通過為會話的openreadwrite等創建自定義方法,使用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

https://github.com/laravel/framework/blob/7acc98e112cce4e04f30c7ee4fc0a53dbc5c425b/src/Illuminate/Session/Store.php#L261

在那一行$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM