有没有办法在每个函数(在控制器中)加载视图(页眉或页脚)?我在那里发表了几个if/else
声明,如果需要,我会很难改变它。
答案 0 :(得分:6)
是的,您可以在控制器顶部的__construct
功能中加载视图。采取
看一下Constructors
function __construct()
{
parent::__construct();
$this->load>-view('your_view');
}
如果header
和footer
将是您网站的可视部分的常量和必需组件,但您可能希望在页眉和页脚之间加载不同的内容部分,那么您可以创建一个可以参数的函数。
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);
}