2014-10-05 32 views
2

空,我有以下代碼:Laravel會話/存儲是刷新

  echo 'First try: <br />'; 
      $input = Session::get('input'); 
      pre($input, false); 

      echo 'Second try: <br />'; 
      Session::put('input', 'test'); 
      pre(Session::get('input')); 

這給下面的輸出它的第一次加載:

First try: 
Second try: 
test 

,預計在第一時間,但是,當我重新加載頁面,我得到完全相同的輸出。刷新後所有數據都會丟失。

我知道這不是閃存數據,但我找不到它爲什麼不存儲數據。我在Windows上使用基於文件的會話和Xampp(使用artisan服務時也是如此)。

存儲文件夾是可寫的。

編輯:剛試過數據庫會話,結果相同。我直接在路由文件中這樣做,所以沒有其他代碼可以搞砸了。

預功能:

function pre($data , $kill = true) 
{ 
    echo '<pre>'.print_r($data,true).'</pre>'; 
    if($kill){ 
     exit; 
} 
+3

'pre'函數做了什麼?如果它執行了'die' /'exit',它可能會使Laravel會話存儲功能短路。 – ceejayoz 2014-10-05 19:01:28

+0

好吧生病了嘗試在控制器中執行而不殺死腳本,生病發布結果。謝謝你的提示。 – 2014-10-05 19:04:02

+0

請發表您的評論作爲答案,讓我可以接受它!謝謝! – 2014-10-05 19:06:05

回答

2

Laravel的會話數據被寫入作爲響應關機過程的一部分。這是出於效率的原因 - 如果您在請求中撥打幾十個Session::put來電,最好是一次批量創建它們。

其結果是,如果你不喜歡引起或View::makeResponse::json有什麼你,而是exitdie的東西的響應,會話數據就不會被你短路的響應週期寫入。

+0

非常有用!我正在測試一些東西並且死亡並且拋棄了輸出,但是想知道爲什麼我的會話不斷重置。謝謝! – 2016-08-19 17:00:21