2016-02-13 97 views
1

我正在尋找友善的幫助。會議不寫在Laravel 5

我重新安裝了Laravel(此時爲5.2.15)。 我沒有使用Homested。 我chmod'存儲'目錄和子目錄,如文檔建議,給予寫入權限。 會話被配置爲默認,沒有碰任何東西。所以會話驅動程序是'文件',路徑是'框架/會話'。

我寫這些考試路線:

Route::get('/', function() { 
    session(["test" => "ok"]); 
    return view('welcome'); 
}); 

Route::get('/2', function() { 
    print "session = ".session('test');exit(); 
}); 

不是應該足以看到會議的工作? 會話('test')爲空,並且沒有文件寫入框架/會話中。 Chmoded 777框架/會話文件夾肯定沒有任何變化。

我是Laravel的新手..也許我錯過了什麼? 我需要在config/session.php中設置這些變量嗎?

'path' => '/', 
'domain' => null, 

謝謝

+3

的可能的複製[Laravel - 對請求未設置會話存儲器(http://stackoverflow.com/questions/34449770/laravel-session-store-not-set-應要求) – Bogdan

+2

查看鏈接的副本。如果你需要會話,你的路由應該在'web'中間件組中定義。 – patricus

回答

3

如果你打開你的應用程序/ HTTP/Kernel.php,你會看到,會話類是 '網絡' 組的一部分,所以它不是默認包括:

protected $middlewareGroups = [ 
     'web' => [ 
     ... 
      \Illuminate\Session\Middleware\StartSession::class, 
     ... 
     ] 
] 

因此,你必須以「網絡」中間件來包裝你的路由組中,或添加「我們B」中間件分別各路線:

Route::group(['middleware' => ['web']], function() { 
    Route::get('/', function() { 
     session()->put('test', 'ok'); 
     return view('welcome'); 
    }); 

    Route::get('/2', function() { 
     return 'session = ' . session('test'); 
    }); 
} 
+0

謝謝,這解決了我的問題。我閱讀了整個文檔,但不清楚這一步是否必要。完全一樣。謝謝。 – user2029958

1

試試這個:

Route::get('/', function() { 
    Session::put('test', 'ok'); 
    return view('welcome'); 
}); 

Route::get('/2', function() { 
    print "session = ".Session::get('test');exit(); 
});