2017-10-21 74 views
0

我正在使用Laravel 5.4.36版,全局會話幫助程序不再工作。Laravel全球會話幫手不工作

這是我做的:當登錄用戶訪問控制器功能時,我需要保存一些數據,當用戶刷新(重新加載)頁面時,我想保留這些數據,但似乎全局會話助手不是這樣做。我做錯了什麼?我的會話是基於文件的。 我跟着official doc,但不幸的是沒有幫助:)

$request->session()->put(...)存儲數據在我的情況下是無用的,因爲每當用戶重新加載頁面數據丟失。

use Illuminate\Http\Request; 

class WatchController extends Controller{ 

    public function __construct(){ 
     $this->middleware(['auth']); 
    } 

    public function watchAds(Request $request){ 

     $userId = Auth::user()->id; 

     if(!session('data')){ 

      echo "Data not set"; 
      $data = array(1,3,4,5); 
      session(['data' => $data]); 
      //Update, here it print data but if I do reload the page then always load this if section. 
      $data = session('data'); 
      print_r($data); 

     }else{ 

      echo "Data already set"; 
      $data = session('data'); 
      print_r($data); 
     } 
     exit; 
    } 
} 
+0

嘗試將會話驅動器更改爲其他內容。 – astratyandmitry

+0

在session.php中更改會話驅動程序後的結果相同 –

+0

「storage」目錄是否可寫?你有沒有設置應用程序密鑰?請參見[安裝>配置](https://laravel.com/docs/5.4/installation#configuration)。 –

回答

1

會話數據實際上後來存儲在請求生命週期(搜索「終止的中間件」),很晚了,即使內容已被髮送到用戶的瀏覽器。

但是代碼中的exit;立即結束了PHP腳本,因此中間件的terminate方法不會執行。

更準確地說,您跳過執行Session/Middleware/StartSession.phpterminate方法。