Из основного контроллера codeigniter - PullRequest
0 голосов
/ 06 ноября 2011

Это мой контроллер 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', $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

Мне действительно нужно переназначить все данные ??Есть ли другой способ?

1 Ответ

1 голос
/ 06 ноября 2011

$player установлено в __construct() вашего MY_Controller класса.Как функция index() в классе Welcome должна автоматически получать ее значение?

Вместо этого определите $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);
        }
    }
}
...