我正在使用CodeIgniter(v1.7.2)并且我创建了一个自定义控制器,其中包含名为MY_Controller的身份验证(基于David Winter的博客文章)。当我加载任何使用此基类的控制器时,我收到此错误;
*消息:未定义的属性:MY_Controller :: $ session *
请注意,我正在自动加载'session'(和'MY_controller'作为库),如下所示:
$autoload['libraries'] = array('database', 'session', 'MY_Controller');
这是MY_Controller:
class MY_Controller extends Controller {
public function __construct() {
parent::__construct();
if (!$this->session->userdata('loggedin')) { <-- error is here
header('Location: /sessions/login');
exit();
}
}
}
这是我正在尝试加载的控制器:
class Welcome extends MY_Controller {
function __construct() {
parent::__construct();
}
function index() {
$this->load->view('header');
$this->load->view('welcome_message');
$this->load->view('footer');
}
}
当我将var_dump $this->session
置于错误发生的上方时,我可以看到它是NULL。即使将$this->load->library('session');
放在MY_Controller的构造函数中也行不通。为什么不正确加载?
由于
答案 0 :(得分:5)
尝试从自动加载中取出MY_Controller。
$autoload['libraries'] = array('database', 'session');
您正在扩展由codeigniter自动加载的控制器类,因为它是核心
的一部分