我有一个小问题,我不知道该怎么做。
我有一个带
的模板在我的所有页面上,唯一需要更改的是内容,所以如何将数据传递到我的侧边栏/页脚
我需要制作一个控制器吗?或者我是否需要创建一个库并将其加载到我的template.php文件中?
我使用这个模板系统 http://williamsconcepts.com/ci/codeigniter/libraries/template/index.html
答案 0 :(得分:0)
我不确定你的特定模板库,但我知道通常这是通过在其他视图中嵌套视图来完成的,只要数据被加载到初始视图中,它也会传播到嵌套视图。
没有模板库的示例
控制器功能
function index() {
$data['some_var'] = "some value";
$data['another_var'] = "another value";
$this->load->view('first_view',$data);
}
<强> first_view 强>
<? $this->load->view('header') ?>
<h1>Content</h1>
<? $this->load->view('sidebar') ?>
<? $this->load->view('footer') ?>
在这种情况下,加载到$data
的{{1}}会传播到first_view
,header
和sidebar
。
因此,您可以在任何这些视图中使用footer
或$some_var
。
<强>更新强>
另一种可以将数据加载到视图全局的方法是使用此功能
$another_var
如果$this->load-vars($data);
是您的视图数据,则在加载模板之前的此语句应该允许在模板加载的任何视图中访问所有这些数据。虽然 是一种霰弹枪方法,但建议的方法是your chosen template library。
答案 1 :(得分:0)
如果您只更改内容,则无需为标题,侧边栏或页脚设置区域 - 只需将其内容添加到主模板文件中即可。
但是,如果您不经常需要更改这些区域的内容,我会为这些区域创建“默认”视图,并在每个控制器构造函数中加载,如下所示:
$this->template->write_view('header', 'default/header');
$this->template->write_view('sidebar', 'default/sidebar');
$this->template->write_view('footer', 'default/footer');
然后,您可以扩展这些默认区域视图或按每个方法覆盖它们(请参阅库的文档以了解具体方法)。