如何在laravel中的构造函数会话中使用受保护的变量

时间:2016-10-12 09:49:30

标签: laravel session variables constructor scope

我在laravel中有仪表板控制器..用户登录我在会话中保存userId ..每个函数我都要访问会话变量userId ..我想将会话值存储在我的构造函数中可变..

protected $users;

protected $session;

protected $userId;

public function __construct(Users $users,Session $session){  
       $this->users      = $users;
       $this->session    = $session;
       if($this->session->has('userId)){
         $this->userId = $this->session->get('userId);
       }
}

public function login(){
    // After success saving userId in session and assing like as below
     $this->userId = $response['id'];
}

public function dashboard(){
  echo $this->userId; // Is empty
}

解决方案是什么或如何使用它?

2 个答案:

答案 0 :(得分:1)

n Laravel 5.3,您无法访问控制器构造函数中的会话或经过身份验证的用户,因为中间件尚未运行

答案 1 :(得分:0)

我建议将其添加到以下方法中:

private function getUserId() {
    return ($this->session->has('userId) ? $this->session->get('userId) : null;
}

然后在控制器中调用它:$this->getUserId()

或者,您可以将此添加到您的构造中,如下所示:

$this->userId = ($this->session->has('userId) ? $this->session->get('userId) : null;并与您的班级一起访问$this->userId