2013-05-19 4 views
0

Я разрабатываю веб-сайт с помощью 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 обнаружена ошибка Серьезность: Примечание Сообщение: Undefined переменная: данные Имя файла: контроллеры/admin.php Номер строки: 73

Номер строки 73: $this->load->view('admin/header', $data);

+0

'$ data' ->' $ this-> data' – Dave

ответ

2

Вы объявляете приватную переменную внутри функции; вам придется переместить его.

Так что:

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

+0

Небольшая синтаксическая ошибка. '$ this -> $ data = Array ('');' должно быть: '$ this-> data = Array ('');' (или, предпочтительно, '$ this-> data = array();') , – TARKUS

1

Поскольку вы используете атрибут объекта, необходимо добавить к ней префикс $this:

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

Кроме того, вы должны объявить его в рамках класса, а не в конструктор-х.

Смежные вопросы