用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7197|回复: 12
收起左侧

[已解决] 调用多个视图怎样做才是最好的?

[复制链接]
发表于 2008-3-23 14:14:39 | 显示全部楼层 |阅读模式
文档提供的方法是:
PHP复制代码
 
$this->load->view('view1');
$this->load->view('view2');
$this->load->view('view3');
//etc
 
复制代码

实际上,也可以这样做:
在controler里:
  1. $this->load->view('views',$data);
复制代码
然后在views.php里:
PHP复制代码
 
$this->load->view('view1');
$this->load->view('view2');
$this->load->view('view3');
//etc
 
复制代码


主要是考虑以下情况:
一个页面交给设计控制器的人是完整的,接口是该页面所有的变量,但实际上该页面是由几个文件组成(如:header,footer,container等)。这样,写控制器的人就要更多地知道页面设计的部分细节了(了解这个页面由几个文件组成,分别需要什么变量)。
而且改起来也不方便
如:
PHP复制代码
 
$this->load->view('view1',$data1);
$this->load->view('view2',$data2);
$this->load->view('view3',$data3);
 
复制代码

每个页面变量变一次就要相应地给$dataX数组添加

如果采用后一种方式,这两者间的变化可以全放在一个view里面处理,耦合似乎减少不少?



不知用CI做开发的一般用哪种方式?

[ 本帖最后由 iptton 于 2008-3-23 14:16 编辑 ]
发表于 2008-3-23 16:36:20 | 显示全部楼层
我使用的方法是在视图里直接 load 其他视图。当然不同的项目有不同的方法。
发表于 2008-3-23 22:08:22 | 显示全部楼层
同上。

header和footer直接在view里load。
发表于 2008-3-25 20:01:17 | 显示全部楼层
同上的同上:)
发表于 2008-3-26 17:12:09 | 显示全部楼层
我在My_controller里面专门有个处理view的方法
所有试图均调用这个方法生成
那个方法里面

$this->load->view('head',getNow);
$this->load->view('body',getFromParameterOfTheFunction);
$this->load->view('bottom',getNow);


所有view的页面里面只写body部分,别的不管
发表于 2008-3-26 17:20:51 | 显示全部楼层
1.6.1 才有这功能啊~呵呵~老版本的就不能这么写了。
发表于 2008-3-26 17:25:45 | 显示全部楼层
我觉得那样好些

java里有个叫sitemash,template处理试图
它会把各个子页面的title,meta,etc指定的内容和template相互叠加
然后生成页面

超级棒,可惜只见到过这么一个
发表于 2008-3-26 19:38:11 | 显示全部楼层
老大,你不错啊,理解这么好,我才刚才接触CI,请多指教哈!
发表于 2008-3-26 19:39:19 | 显示全部楼层
kkito
能不能发一个你做的东西出来看看,谢谢,对新手也是个帮助哈!!
发表于 2008-3-26 20:28:27 | 显示全部楼层

回复 9楼 的帖子

本人网站就是这样实现的
底下是代码
原版copy过来
我也是ci&php的新手

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");
 }
复制代码

本版积分规则