因为一些原因,我可能需要在Controller里
$this->render(‘t1’);
$this->render(‘t2’);
if (true) {
$this->render(‘t3’);
}
。。。
但发现Yii每次render后,就渲染layout。我要的目的是
一个layout里,依次render t1 t2 t3。
当然,可以在t1里,进行renderPartial控制。但是不那么方便。
请问强,有什么好的方法么?
因为一些原因,我可能需要在Controller里
$this->render(‘t1’);
$this->render(‘t2’);
if (true) {
$this->render(‘t3’);
}
。。。
但发现Yii每次render后,就渲染layout。我要的目的是
一个layout里,依次render t1 t2 t3。
当然,可以在t1里,进行renderPartial控制。但是不那么方便。
请问强,有什么好的方法么?
public function render($view,$data=null,$return=false)
第三个参数设置为true就是返回字符串,而非直接打印~~
返回的数据,已经是包含了layout的
public function render($view,$data=null,$return=false)
$this->layout=‘column_empty’;
做个空的Layout,咋样
render() 之前使用
$this->layout=false;
我的意图是要将
t1 t2 t3…等等,按照顺序渲染某一个layout里啊。类似于,在view里调用renderPartial。
$this->render(‘t1’);
$this->render(‘t2’);
if (true) {
$this->render(‘t3’);
}
你在前面做个if判断,如果有了reder,就后面的用renderPartial
不知道你这么做的原因是什么,不过你可以在t3视图里调用:
$this->beginClip(‘t1’);
$this->renderPartial(‘t1’);
$this->endClip();
$this->beginClip(‘t2’);
$this->renderPartial(‘t2’);
$this->endClip();
然后在layout里通过$this->clips[‘t1’]和$this->clips[‘t2’]获得刚才的结果。
我说错了 应该是全部 renderPartial。没搞明白,为什么qiang写的那么复杂。
$this->beginClip();
$this->endClip();
可以不要吧?我都是这么做的。
呵呵,其实不用clips。你直接用renderPartial返回就行了。
renderPartial是不带layout的呀。
我想要的是t1 t2 t3。。。等这几个视图根据一些规则,依次按顺序渲染到“某一个layout”里。当然这个功能,如果在view里做很简单的(像楼上几位说的renderPartial),如果在controller里,好像不是很方便。
cake和zf的做法,好像是render时,将数据保存为一个变量(如$_output),多次render,都保存到这个变量里,在afterAction后,再将整个变量渲染到指定的layout当中,并输出。
不知道是不是我钻牛角了,呵呵!
给controller添加一个view,一切都搞定,那么复杂做什么啊?
又不科学,又不直观,又不OO
手册还是要多看呀,很多没用过~