今天摸索着用了一下,分享下代码
控制器位置:(项目根目录) Home/Lib/Widget/ProjectinfoWidget.class.php
需要输出到模板的,模板位置在上面控制器目录下建立一个文件夹,即:Home/Lib/Widget/Projectinfo/
php文件
<?php
class ProjectinfoWidget extends Widget {
public function render($data){
$info = $this->project($data['count']);
$data['num'] = $info[0];
$data['list'] = $info[1];
return $this->renderFile('projectinfo', $data);
}
protected function project($limit){
$model = M('Projectinfo');
$num = $model->where('state=1 AND approve=11 AND projectstage in (104,105,106,107,108)')->count();
$res = $model->where('state=1 AND approve=11 AND projectstage in (104,105,106,107,108)')
->order('projectcreate desc')
->limit($limit)
->select();
return array($num, $res);
}
}
需要渲染的模板文件,位置Home/Lib/Widget/Projectinfo/projectinfo.html <div class="tit_zjf">
<span>项目<b class="red">(<{$num}>个)</b></span>
<a href="<{:U('Projectinfo/projectlist')}>">查看所有</a>
</div>
<div class="w95">
<volist name="list" id="vo">
<div class="rpic fontsize14">
<a href="<{:U('Projectinfo/detail', array('id'=>$vo['projectid'],'uid'=>$vo['projectpublic']))}>"><img src="<{:C('PIMG_URL')}><{$vo['projectimg']}>" /><{$vo['projectname']}></a>
</div>
</volist>
</div>
在模板上调用的方法是(显示5条): <{:W('Projectinfo'), array('count'=>5)}>
注:
1. count是显示多少条,这个你从php文件的render方法中打印一下$data就明白了,就是定义了$data['count'],还可以传其他你想要的参数
2. $this->renderFile('projectinfo', $data);这一行,projectinfo是模板名,如果留空,就是跟widget同名,即Projectinfo,区分大小写的
3. 模板中的变量名就是$data数组的每一个键值,即$num是控制器中$data['num'],其它类推
初次分享,不足的请谅解
最佳答案
