Laravel会话值从会话中删除

时间:2019-01-15 12:39:46

标签: php laravel laravel-5

我正在使用service-provider在模型中创建会话,但是当我尝试在另一页上获取会话值时,它将什么也没显示。

服务提供商(Projectfunction.php)

public function test1(){
    $student_model = new \App\Config();
    return $student_model->createSession();
}
public function test2(){
    $student_model = new \App\Config();
    print_r($student_model->viewSession_v1());
}

模型(Config.php)

public function createSession(){
    session()->put('email', 'abcd123');
}
public function viewSession_v1(){
    $data = session()->get('email');
    return $data;
}

我从控制器使用project_function()->test1()project_function()->test2()

当我分别调用这两个变量时,test2()将不会显示任何会话值,但是如果我从test2()中调用test1(),则会显示会话值。我不知道为什么。是否有任何规则只能从控制器创建会话?因为我尝试从多个控制器执行此操作,所以效果很好。 (我已经在不同的控制器中创建了单独的显示会话代码,而在单个控制器中创建了单个会话,并且运行正常,那么为什么它在模型和服务提供者中不起作用?)

3 个答案:

答案 0 :(得分:1)

下面的代码创建一个会话并为我工作。

\Session::put('email', 'abcd123@abc.com');
\Session::save();

答案 1 :(得分:0)

如果您从test1()调用到test2(),则session()的值为email,因为它是由test1()的put('email','abcd123')方法创建的,但是只能从test2访问(),则它没有email值。

尝试这样(但是我没有在我的环境中经过测试)

public function createSession(){
    $test = session()->put('email', 'abcd123');
    return self::viewsession_v1($test);
}
public function viewSession_v1($test){
    $data = $test->get('email');
    return $data;
}

我希望这对您有帮助:)

答案 2 :(得分:0)

似乎您无法在服务提供商中访问会话。检查以下链接。 https://github.com/laravel/framework/pull/7933

您必须为此创建一个中间件。希望这会有所帮助。