Codeigniter:将数据从父控制器构造函数传递到视图(未定义变量错误)

时间:2014-01-19 08:33:37

标签: php codeigniter controller

myController的:

class MY_Controller extends CI_Controller {

        public $data = array();

        function __construct() {
            parent::__construct();
            $this->data['errors'] = array();
            $this->data['site_name'] = config_item('site_name');
        }

}

AdminController:

class Admin_Controller extends MY_Controller {

    function __construct() {
        parent::__construct ();
        $this->data ['meta_title'] = 'Admin Panel';
        $this->load->helper ( 'form' );
        $this->load->library ( 'form_validation' );
    }
}

UserController中:

class User extends Admin_Controller {

        public function __construct() {
            parent::__construct();
        }

        public function login() {
            $this->data['subview'] = 'admin/user/login';
            $this->load->view('admin/_layout_modal', $this->data);
        }
         }

查看:_layout_modal.php

$this->load->view($subview);
echo $meta_title;

但是$ subview和$ meta_title都抛出了“Undefined variable”错误。

遇到PHP错误

严重性:注意

消息:未定义的变量:子视图

文件名:admin / _layout_modal.php

2 个答案:

答案 0 :(得分:1)

默认情况下,$ this-> load->视图直接将数据发送到浏览器。

您似乎希望将视图加载为字符串格式,而不是直接发送到浏览器。

您需要在“视图”功能中添加一个参数

我认为您应该像这样更改您的代码:

UserController中:

    public function login() {
        $this->data['subview'] = $this->load->view('admin/user/login', true);
        $this->load->view('admin/_layout_modal', $this->data);
    }

查看:_layout_modal.php

echo $subview;
echo $meta_title;

参考:

http://ellislab.com/codeigniter/user-guide/general/views.html

答案 1 :(得分:0)

尝试使用$data['subview']而不是$this->data['subview'],在加载视图时使用$this->load->view('admin/layout',$data);并在布局文件中调用<?php echo $subview; ?>