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
答案 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; ?>