考虑我的代码:
<?php
class MY_Controller extends Controller {
public function __construct()
{
parent::Controller();
}
function _displayPage($page, $data = array()) {
$this->load->view('structure/header', $data);
$this->load->view($page, $data);
$this->load->view('structure/footer', $data);
}
}
?>
page.php文件
<?php
class Page extends MY_Controller {
function __construct() {
parent::__construct();
}
function index() {
$data['content'] = array('title'=>'hello world');
$this->_displayPage('home', $data);
}
}
?>
在我的浏览器上加载页面后,出现此错误:
A PHP Error was encountered Severity: Notice Message: Undefined property: Page::$view Filename: libraries/MY_Controller.php Line Number: 11
有谁知道我做错了什么? 感谢
答案 0 :(得分:0)
在您的资源库My_Controller
中,您应该使用parent
关键字而不是$ this。
您的代码应如下所示:
class MY_Controller extends Controller
{
public function __construct()
{
parent::Controller();
}
function _displayPage($page, $data = array())
{
parent::load->view('structure/header', $data);
parent::load->view($page, $data);
parent::load->view('structure/footer', $data);
}
}
答案 1 :(得分:0)
如果我了解您要正确完成的操作,那么您需要设置包含标题视图和页脚视图的模板,但不要为整个应用程序中使用的每个控制器调用页眉和页脚视图。以下是我为实现这一目标所做的工作。
首先,在您的视图下创建一个新文件夹,对于此示例,我们将其称为“包含”。在新创建的includes文件夹中,创建三个文件header.php,footer.php和template.php。适当地设置页眉和页脚,然后编辑template.php,如下所示:
<?php echo $this->load->view('includes/univ_header'); ?>
<?php echo $this->load->view($main_content); ?>
<?php echo $this->load->view('includes/univ_footer'); ?>
现在,您可以从控制器中定义要设置为“main_content”的视图。例如,如果您在views文件夹中有home.php,并且想要用页眉和页脚包装它,则可以在控制器中执行以下操作:
function index() {
$data['content'] = array('title'=>'hello world');
$data['main_content'] = 'home';
$this->load->view('includes/template', $data);
}
希望这有帮助!