PHP 全局变量为空


php global variable is null

我的类中有一个protected $headers变量,使用函数分配一个值

public function actionLogIn()
{
$userCode = Input::get('username');
$password = Input::get('password'); 
$loginData = array(
    'code' => $userCode,
    'passkey' => $password
);
$loginData = json_encode($loginData);   
$this->headers = Auth::login($loginData);//Modified login method
if(! is_null($this->headers))
{
    return View::make('forms.welcome')->with('title', 'Welcome');
}else{
    echo "Invalid access!";
}
}

当我使用print_r($this->headers);时,它成功地打印出我需要的值,但是当我尝试使用该功能访问$this->headers时:

public function actionLogOut()
{
    if(is_null($this->headers)){
        echo "is null", "'n";
    }//for checking only
    Auth::logout($this->headers);
}

$this->headers为空。可能有什么问题?此外,$headers实际上是一个数组。谢谢!

为每个请求创建一个新的控制器实例。 这意味着即使您将信息存储在$this中,当用户请求新页面时,这些信息也不存在。

您要做的是将数据存储在请求之间不会更改的内容中 - 无论是在会话中还是在 cookie 中。

在会话中,它如下所示:(警告 - 未经测试的代码)

public function actionLogIn() {
  ...
  $loginData = json_encode($loginData);   
  $user = Auth::login($loginData);
  if ($user) {
    Session::put('logged_in_user',$user);
    return View::make('forms.welcome')->with('title', 'Welcome');
  }else{
    echo "Invalid access!";
  }
}
public function actionLogOut() {
  if(Session::has('logged_in_user'){
    $user = Session::get('logged_in_user');
    Auth::logout($user);
    Session::forget('logged_in_user');
  } else {
    echo "is null'n";
  }
}

查看 http://four.laravel.com/docs/session 以获取有关拉拉维尔会议的更多信息。