2013-09-12 5 views
0

У меня возникли трудности с передачей унаследованных данных с расширенного контроллера на мой взгляд в приложении codeigniter.Передача данных от родителя к дочернему контроллеру в вид

У меня есть мой backend_controller и код моей панели управления следующим образом. Я также включаю то, что я делаю в представлении ниже.

Когда я загружаю нагрузку на страницу, я получаю неопределенную ошибку имени переменной cms. Я был под впечатлением, что правильно правильно передал данные.

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Backend_Controller extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->my_backend(); 
    } 

    public function my_backend() 
    { 
     $data['cms_name'] = $this->config->item('cms_name'); 
    } 
} 

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Control_panel extends Backend_Controller 
{ 
    /** 
    * Loads models, configs, helpers. 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    /** 
    * Loads the control panel. 
    */ 
    public function index() 
    { 
     $this->template 
      ->title('Dashboard') 
      ->build('dashboard_view', $this->data); 
    } 
} 

<?php echo $cms_name; ?> 

ответ

1

Скорее всего, вы хотите, чтобы сделать $data массив свойство экземпляра:

class Backend_Controller extends MY_Controller 
{ 
    protected $data = array(); 
    ... 

    public function my_backend() 
    { 
     $this->data['cms_name'] = $this->config->item('cms_name'); 
    } 
} 
+0

Да что действительно помогает решить мою проблему. – user2576961

0

Вы должны создать свойство класса, чтобы он доступен для дочернего класса:

class Backend_Controller extends MY_Controller 
{ 
    public $data; 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->data['cms_name'] = $this->config->item('cms_name'); 

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