CodeIgniter - 自动加载视图?

时间:2012-06-19 17:43:06

标签: codeigniter

有没有办法在每个函数(在控制器中)加载视图(页眉或页脚)?我在那里发表了几个if/else声明,如果需要,我会很难改变它。

3 个答案:

答案 0 :(得分:6)

是的,您可以在控制器顶部的__construct功能中加载视图。采取 看一下Constructors

上的PHP手册
function __construct()
{      
        parent::__construct();
        $this->load>-view('your_view');

}

如果headerfooter将是您网站的可视部分的常量和必需组件,但您可能希望在页眉和页脚之间加载不同的内容部分,那么您可以创建一个可以参数的函数。

 private function doViews($argument) 
 {


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

        $this->load->view($argument);

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


       return NULL;
 }

您可能希望在doViews函数中包含一系列可用视图,以便对文件存在进行适当的验证。然后你只需在控制器中的每个方法中调用函数,如下所示:

$this->doViews('main_content');

答案 1 :(得分:0)

您应该尝试使用这样的模板库:https://github.com/philsturgeon/codeigniter-template

然后您需要将它放在控制器中(可以在__construct中或在方法中)

$this->template->set_partial('header', 'layouts/header');
$this->template->set_partial('footer', 'layouts/footer');
$this->template->set_partial('sidebar', 'layouts/sidebar');

然后像发表视图一样发送数据:

$this->template->build('create', $this->data);

答案 2 :(得分:0)

您可以创建main_view ...作为已经具有结构的母版页

main_view.php

$this->load>-view('header');
<?php //get content here
?>
$this->load>-view('footer');

如果要更改页眉或页脚中的内容(通过语句),可以添加内容:

function __construct()
{      
        parent::__construct();

        $data['footer'] = ($a == 'foo') ? 'footer one' : 'footer two';

        $data_to_main = $this->load->view('template/footer', $data, TRUE);

        $data_to_main = 'others';

        $this->load>-view('main_view', $data_to_main);
}