1

有没有办法在每个功能(在控制器中)上加载视图(用于页眉或页脚)?我在if/else那里有几个陈述,当我需要时改变它会很痛苦。

4

3 回答 3

6

__construct是的,您可以在控制器顶部的函数中加载视图。查看有关构造函数的 PHP 手册

function __construct()
{      
        parent::__construct();
        $this->load>-view('your_view');

}

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

 private function doViews($argument) 
 {


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

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

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


       return NULL;
 }

您可能希望在doViews函数内有一组可用视图,以便正确验证文件是否存在。然后,您只需在控制器中的每个方法中调用该函数,如下所示:

$this->doViews('main_content');
于 2012-06-19T17:45:21.833 回答
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);
}
于 2012-06-19T19:52:05.593 回答
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);
于 2012-06-19T19:36:43.340 回答