使用MVC Codeigniter分隔页眉和页脚

时间:2010-11-29 13:24:56

标签: php codeigniter templates

我正在寻找一种简单的方法来显示相同​​的页眉和页脚,同时能够切换出主要内容区域。我不确定如何使用MVC实现这一目标。

4 个答案:

答案 0 :(得分:10)

您可以创建主视图。

<强>视图/ master.php

$this->load->view('header');
echo $content;
$this->load->view('footer');

然后使用一种方法创建一个基本控制器来呈现主视图。子视图的内容将被加载并传递到主视图。

<强>库/ MY_Controller.php

class MY_Controller extends Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function master_view($content_view, $data)
    {
        $data['content'] = $this->load->view($content_view, $data, true);
        $this->load->view('master', $data);
    }
}

然后扩展此基本控制器并从您的操作方法调用基本控制器的方法。

<强>控制器/ items.php

class Items extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $data['items'] = $this->item_model->get_items();
        $this->master_view('items/index', $data);
    }
}

它往往比在每个视图中加载页眉和页脚更加干燥。

答案 1 :(得分:1)

只需为标题创建一个视图,然后为页脚创建一个视图,并在每个页面的顶部和底部将它们吐出。或者,创建模板视图并加载它,然后获取其他视图并将它们注入模板的内容区域。无论哪种方式都可以让你到达你想去的地方。如果希望它自动发生,可以在控制器的构造函数中创建模板视图,并将其保存到控制器类的成员中。然后使用它,例如,$ this-&gt;模板将是模板视图。

答案 2 :(得分:0)

答案 3 :(得分:0)

与上面类似,我这样做:

$this->data['content']='your_content_view';
$this->load->vars($this->data);
$this->load->view('template');

然后在模板视图中:

$this->load->view('header');
$this->load->view($content);
$this->load->view('footer');

视图可以加载其他视图,因此模板视图会加载标题视图,然后加载您在内容中指定的视图,然后加载页脚视图。

使用此提示,您可以将侧边栏视图加载到内容等中

相关问题