widget使用

浏览:7452 发布日期:2014/05/20 分类:技术分享 关键字: widget W
手册说widget用法几乎看不懂
今天摸索着用了一下,分享下代码
控制器位置:(项目根目录) 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'],其它类推

初次分享,不足的请谅解
最佳答案
评论( 相关
后面还有条评论,点击查看>>