首页 文章

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

提问于
浏览
0

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);
        }
         }

View: _layout_modal.php

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

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

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: subview

Filename: admin/_layout_modal.php

2 回答

  • 1

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

  • 0

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

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

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

    我想你应该改变你的代码:

    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

相关问题