有没有办法在每个功能(在控制器中)上加载视图(用于页眉或页脚)?我在if/else
那里有几个陈述,当我需要时改变它会很痛苦。
问问题
1907 次
3 回答
6
__construct
是的,您可以在控制器顶部的函数中加载视图。查看有关构造函数的 PHP 手册
function __construct()
{
parent::__construct();
$this->load>-view('your_view');
}
如果header
andfooter
将是您网站视觉部分的常量和必需组件,但您可能希望在页眉和页脚之间加载不同的内容部分,那么您可以创建一个带参数的函数。
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 回答