我正在使用CodeIgniter开发一个网站。
我已经声明了一个控制器,在这个控制器类中我添加了一个私有变量作为数组,我用会话类中的信息填充了这个数组。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller{
public function __construct()
{
private $data = Array('');
parent::__construct();
$this->data = Array(
'nom' => $this->session->userdata('admin_fullname')
);
}
在某些方法中,我必须将此变量称为:
public function dashboard(){
$this->load->view('admin/header', $data);
$this->load->view('admin/left_navigation');
$this->load->view('admin/dashboard');
$this->load->view('admin/footer');
}
但它给了我这个错误:
#A遇到PHP错误严重性:通知消息:未定义 变量:data文件名:controllers / admin.php行号:73
第73行是:$this->load->view('admin/header', $data);
答案 0 :(得分:3)
您在函数中声明私有变量;你必须将它移动到类级别并在构造或函数内初始化它。
所以这个:
class Admin extends CI_Controller{
public function __construct()
{
private $data = Array('');
parent::__construct();
$this->data = Array(
'nom' => $this->session->userdata('admin_fullname')
);
}
将变成这个:
class Admin extends CI_Controller{
private $data;
public function __construct()
{
$this->data = Array('');
parent::__construct();
$this->data = Array(
'nom' => $this->session->userdata('admin_fullname')
);
}
此外,请不要忘记通过在$this->
前加上数据来访问您的数据。
答案 1 :(得分:1)
由于您使用的是对象属性,因此需要在其前面添加$this
:
$this->load->view('admin/header', $this->data);
此外,您应该在类范围内声明它,而不是在构造函数中声明它。