来自核心控制器codeigniter


From core controller codeigniter

这是我的欢迎控制器

class Welcome extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
    }
    function index()
    {
        if (!$this->tank_auth->is_logged_in()) {
            redirect('/auth/login/');
        } else {
            $this->load->view('welcome', $player);
        }
    }
}

MY_Controller

class MY_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
        if ($this->tank_auth->is_logged_in()) {
            $player = $this->tank_auth->get_userdata($this->tank_auth->get_user_id());
            if ($player === NULL) {
                $this->tank_auth->logout();
            }
        }
    }
}

:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: player
Filename: controllers/welcome.php
Line Number: 17
Hi,
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: username
Filename: views/welcome.php
Line Number: 1

我真的需要重新分配所有的数据吗?还有别的办法吗?

$player设置在MY_Controller类的__construct()中。Welcome类中的index()函数如何自动获取其值?

$player定义为MY_Controller类中的受保护属性,以便每个扩展它的控制器类都可以使用$player的值。

class MY_Controller extends CI_Controller
{
    protected $player;
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
        if ($this->tank_auth->is_logged_in()) {
            $this->player = $this->tank_auth->get_userdata($this->tank_auth->get_user_id());
            if ($this->player === NULL) {
                $this->tank_auth->logout();
            }
        }
    }
}

现在你的Welcome类可以使用它的值了

class Welcome extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
    }
    function index()
    {
        if (!$this->tank_auth->is_logged_in()) {
            redirect('/auth/login/');
        } else {
            $this->load->view('welcome', $this->player);
        }
    }
}