Php 如何在Codeigniter中有效地处理菜单模板?
我正在寻找更好的方法来处理我的模板。 现在,我的模板如下所示:Php 如何在Codeigniter中有效地处理菜单模板?,php,codeigniter,templates,Php,Codeigniter,Templates,我正在寻找更好的方法来处理我的模板。 现在,我的模板如下所示: function show_pageA() { /* */ /* */ /* */ /*
function show_pageA() {
/* */
/* */
/* */
/* */
/* */
/* 10 lines menu related codes here */
/* mainly to get variables from databas */
/* */
/* */
/* */
/* */
$data['menu'] = array of variables pulled from previous line
$data['main_content'] = 'pageA';
$this->load->view('template',$data);
}
function show_pageB() {
/* */
/* */
/* */
/* */
/* */
/* 10 lines menu related codes here */
/* mainly to get variables from databas */
/* */
/* */
/* */
/* */
$data['menu'] = array of variables pulled from previous line
$data['main_content'] = 'pageB';
$this->load->view('template',$data);
}
view/template.php
$this->load->view('includes/menu', $menu);
$this->load->view('includes/content', $main_content);
我的模板中的菜单使用了数据库中的几个变量
我的控制器看起来像这样:
function show_pageA() {
/* */
/* */
/* */
/* */
/* */
/* 10 lines menu related codes here */
/* mainly to get variables from databas */
/* */
/* */
/* */
/* */
$data['menu'] = array of variables pulled from previous line
$data['main_content'] = 'pageA';
$this->load->view('template',$data);
}
function show_pageB() {
/* */
/* */
/* */
/* */
/* */
/* 10 lines menu related codes here */
/* mainly to get variables from databas */
/* */
/* */
/* */
/* */
$data['menu'] = array of variables pulled from previous line
$data['main_content'] = 'pageB';
$this->load->view('template',$data);
}
正如您所看到的,每个页面函数都有10行与菜单相关的代码,这对我来说似乎是多余的
在练习MVC时,有人能给我一个更好的方法吗
谢谢,我会做两件不同的事情来补救这种情况
菜单\u model
,它有一个get()
函数,用于返回需要加载到视图中的项目数组。然后在每个控制器中调用它将非常简单
$data['menu'] = $this->menu_model->get(); //assuming you autoload this model
function show_pageA() {
$data['main_content'] = 'pageA';
$this->load->view('template',$data);
}
(另外,如果此“菜单”逻辑跨越多个控制器,我建议滚动包含此逻辑的自定义
MY_Controller.php
,这样您就不会在每个控制器构造函数中重复自己)而不是在模板和部分时使用Codeigniter视图,您应该考虑使用模板库。你可能会发现周围有很多有用的东西,它们大多处理面包屑导航、查看片段和其他你想做的很棒的事情
我在我的Codeigniter项目中使用Phil Sturgeon的模板库,因为它很轻而且可以正常工作:
Colin Williams模板库是另一个流行的模板库:http://williamsconcepts.com/ci/codeigniter/libraries/template/
一些人似乎喜欢使用直观模板库:当你说“菜单”时,你指的是导航吗?