尝试在my_controller中加载视图时出错

时间:2011-01-16 22:51:32

标签: php codeigniter

考虑我的代码:

<?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

有谁知道我做错了什么? 感谢

2 个答案:

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

希望这有帮助!