我正在使用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()
,则会显示会话值。我不知道为什么。是否有任何规则只能从控制器创建会话?因为我尝试从多个控制器执行此操作,所以效果很好。 (我已经在不同的控制器中创建了单独的显示会话代码,而在单个控制器中创建了单个会话,并且运行正常,那么为什么它在模型和服务提供者中不起作用?)
答案 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
您必须为此创建一个中间件。希望这会有所帮助。