如何在一个方法中设置会话并在laravel 5.2中的另一个方法中获取会话数据

时间:2016-01-04 11:12:26

标签: php laravel session laravel-5 laravel-5.2

此函数将获取会话值

public function getSession(){
    $value =Session::get('email');
    var_dump($value) ;
}

此函数用于设置会话值

public function setSession(){
    Session::put('email', 'aaaaaaa.com');

    $value=Session::get('email');
    var_dump($value);

}

routes.php文件

Route::get('store','Product@setSession');
Route::get('display','Product@getSession');

当在url中显示类型时,它显示为NULL

2 个答案:

答案 0 :(得分:2)

当您使用Laravel 5.2时,您可能必须在'web'组下设置路线才能使用会话。

事实上,Laravel在\Illuminate\Session\Middleware\StartSession::class中间件中初始化了会话,该中间件分组在'web'中间件组下(正如您从Kernel.php文件中看到的那样)

因此,要使用会话,您的路由应使用该middlware:

Route::group(['middleware' => ['web']], function () {
    Route::get('store','Product@setSession');
    Route::get('display','Product@getSession');
});

此外,我建议您正确关闭请求周期,以确保会话设置,例如:

public function setSession(){
    Session::put('email', 'aaaaaaa.com');
    $value=Session::get('email');

    //this will end the request-lifecycle 
    return Response::json(['result' => 'ok']);
}

答案 1 :(得分:0)

如果您将新安装laravel 5.2,您可以在路径文件中看到添加了中间件['web'],它位于\ Illuminate \ Session \ Middleware \ StartSession :: class下,如果您将使用下面的会话路由中的那个组,会话在那里工作正常,或者如果你正在使用任何其他组,那么你必须使用那个中间件。