iptton 发表于 2008-3-23 14:14:39

调用多个视图怎样做才是最好的?

文档提供的方法是:

$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 编辑 ]

Hex 发表于 2008-3-23 16:36:20

我使用的方法是在视图里直接 load 其他视图。当然不同的项目有不同的方法。

沧蓝 发表于 2008-3-23 22:08:22

同上。

header和footer直接在view里load。

tanqimin 发表于 2008-3-25 20:01:17

同上的同上:) :victory:

kkito 发表于 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部分,别的不管

Hex 发表于 2008-3-26 17:20:51

1.6.1 才有这功能啊~呵呵~老版本的就不能这么写了。

kkito 发表于 2008-3-26 17:25:45

我觉得那样好些

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

超级棒,可惜只见到过这么一个

xhq6632 发表于 2008-3-26 19:38:11

老大,你不错啊,理解这么好,我才刚才接触CI,请多指教哈!

xhq6632 发表于 2008-3-26 19:39:19

kkito
能不能发一个你做的东西出来看看,谢谢,对新手也是个帮助哈!!

kkito 发表于 2008-3-26 20:28:27

回复 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
查看完整版本: 调用多个视图怎样做才是最好的?