【问题标题】:Passing data from a parent to child controller to a view将数据从父控制器传递到子控制器到视图
【发布时间】:2013-09-12 15:07:25
【问题描述】:

我很难将继承的数据从扩展控制器传递到我在 codeigniter 应用程序中的视图。

我的后端控制器和控制面板代码如下。我还在下面的视图中包含了我所做的事情。

当我加载加载页面时,我收到未定义变量 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; ?>

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您可能希望将 $data 数组设为实例属性:

    class Backend_Controller extends MY_Controller
    {
        protected $data = array();
        ...
    
        public function my_backend()
        {
            $this->data['cms_name'] = $this->config->item('cms_name');
        }
    }
    

    【讨论】:

      【解决方案2】:

      您需要创建一个类属性以使其可用于子类:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-23
        • 2020-04-01
        • 2017-01-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        相关资源
        最近更新 更多