调用多个视图怎样做才是最好的?
文档提供的方法是:$this->load->view('view1');
$this->load->view('view2');
$this->load->view('view3');
//etc
实际上,也可以这样做:
在controler里:$this->load->view('views',$data);然后在views.php里:
$this->load->view('view1');
$this->load->view('view2');
$this->load->view('view3');
//etc
主要是考虑以下情况:
一个页面交给设计控制器的人是完整的,接口是该页面所有的变量,但实际上该页面是由几个文件组成(如:header,footer,container等)。这样,写控制器的人就要更多地知道页面设计的部分细节了(了解这个页面由几个文件组成,分别需要什么变量)。
而且改起来也不方便
如:
$this->load->view('view1',$data1);
$this->load->view('view2',$data2);
$this->load->view('view3',$data3);
每个页面变量变一次就要相应地给$dataX数组添加
如果采用后一种方式,这两者间的变化可以全放在一个view里面处理,耦合似乎减少不少?
不知用CI做开发的一般用哪种方式?
[ 本帖最后由 iptton 于 2008-3-23 14:16 编辑 ] 我使用的方法是在视图里直接 load 其他视图。当然不同的项目有不同的方法。 同上。
header和footer直接在view里load。 同上的同上:) :victory: 我在My_controller里面专门有个处理view的方法
所有试图均调用这个方法生成
那个方法里面
$this->load->view('head',getNow);
$this->load->view('body',getFromParameterOfTheFunction);
$this->load->view('bottom',getNow);
所有view的页面里面只写body部分,别的不管 1.6.1 才有这功能啊~呵呵~老版本的就不能这么写了。 我觉得那样好些
java里有个叫sitemash,template处理试图
它会把各个子页面的title,meta,etc指定的内容和template相互叠加
然后生成页面
超级棒,可惜只见到过这么一个 老大,你不错啊,理解这么好,我才刚才接触CI,请多指教哈! kkito
能不能发一个你做的东西出来看看,谢谢,对新手也是个帮助哈!!
回复 9楼 的帖子
本人网站就是这样实现的底下是代码
原版copy过来
我也是ci&php的新手
/**
* 增加用于模板显示
*/
function getView($viewName , $data = false){
//$this->output->get_output();
//$this->output->set_output();
$this->load->view("head");
$userInfo = array("userinfo" => $this->_getLoginUser());
$this->load->view("userinfo" , $userInfo);
$this->load->view("menu");
if($data){
$this->load->view($viewName , $data);
}else{
$this->load->view($viewName);
}
$bottomarray = array("visitAmount" => $this->session->userdata($this->_session_visitcount_key));
$this->load->view("bottom" ,$bottomarray);
//$this->load->view("bottom");
}
页:
[1]
2