1

我正在使用 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 遇到错误严重性:通知消息:未定义的变量:数据文件名:controllers/admin.php 行号:73

第 73 行是:$this->load->view('admin/header', $data);

4

2 回答 2

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->

于 2013-05-19T18:07:57.620 回答
1

由于您使用的是对象属性,因此您需要为其添加前缀$this

$this->load->view('admin/header', $this->data);

此外,您应该在类范围内声明它,而不是在构造函数的范围内。

于 2013-05-19T18:07:53.527 回答