我正在寻求帮助。
我新装了Laravel(此时为5.2.15)。 我不是在使用Homested。 我chmod'存储'目录和子目录,如文档所示,给予写入权限。 会话配置为默认值,未触及任何内容。因此会话驱动程序是'file',path是'framework / sessions'。
我写了这些测试路线:
Route::get('/', function () {
session(["test" => "ok"]);
return view('welcome');
});
Route::get('/2', function () {
print "session = ".session('test');exit();
});
看到会话工作不应该足够吗? session('test')为null,并且没有在框架/会话中写入文件。 Chmoded 777框架/会话文件夹,确保没有任何改变。
我是Laravel的新手..也许我错过了什么? 我需要在config / session.php中设置这些变量吗?
'path' => '/',
'domain' => null,
谢谢
答案 0 :(得分:5)
如果您打开app / Http / Kernel.php,您会看到该会话类是“web”组的一部分,因此默认情况下不会包含它:
protected $middlewareGroups = [
'web' => [
...
\Illuminate\Session\Middleware\StartSession::class,
...
]
]
因此,您必须将路由包装在具有“web”中间件的组中,或者将“web”中间件分别添加到每个路径:
Route::group(['middleware' => ['web']], function() {
Route::get('/', function () {
session()->put('test', 'ok');
return view('welcome');
});
Route::get('/2', function () {
return 'session = ' . session('test');
});
}
答案 1 :(得分:2)
试试这个:
Route::get('/', function () {
Session::put('test', 'ok');
return view('welcome');
});
Route::get('/2', function () {
print "session = ".Session::get('test');exit();
});