ThinkPHP中Widget扩展的两种写法及调用方法详解


Posted in PHP onMay 04, 2017

本文实例讲述了ThinkPHP中Widget扩展的两种写法及调用方法。分享给大家供大家参考,具体如下:

Widget扩展一般用于页面组件的扩展,在页面根据需要输出不同的内容,下面介绍一下ThinkPHP中Widget的两种写法及调用

写法一:

ArticlWidget.class.php文件:

class ArticleWidget extends Widget {
  /**
   *
   * @param array $data
   * @return type
   * 调用方法:{:W('ArticleList',array('cid'=>25,'limit'=>5))}
   * cid为分类id,limit为调用数量
   */
  public function render($data) {
    $Article = M('Article');
    $articleMap["cid"] = $data["cid"];
    $data["articleList"] = $Article->where($articleMap)->order('id desc')->limit($data["limit"])->select();
    foreach ($articleList as $key => $value) {
      if ($value["thumbnail"] == "") {
        $data["articleList"][$key]["thumbnail"] = '/Public/Img/Common/noThumbnail.jpg';
      }
    }
    return $this->renderFile('articleList', $data);
  }
}

模板文件articleList.html在Lib/Widget/Article目录下

<volist name="articleList" id="articleList_vo">
  <li>
    <a href="__APP__/Channel/articleDetail/code/article/id/{$articleList_vo.id}" rel="external nofollow" title="{$articleList_vo.title}">{$articleList_vo.title}</a>
  </li>
</volist>

写法二:

class ArticleWidget extends Action {
  /**
   *
   * @param array $data
   * @return type
   * 调用方法:{:R('Article/articleList',array('cid'=>25,'limit'=>5),'Widget')}
   * cid为分类id,limit为调用数量
   */
  public function articleList($cid, $limit) {
    $Article = M('Article');
    $articleMap["cid"] = $cid;
    $data = $Article->where($articleMap)->order('id desc')->limit($limit)->select();
    foreach ($data as $key => $value) {
      if ($value["thumbnail"] == "") {
        $data[$key]["thumbnail"] = '/Public/Img/Common/noThumbnail.jpg';
      }
    }
    $this->assign('articleList', $data);
    $this->display('Widget:articleList');
  }
}

模板文件articleList.html,内容同写法一,但放在Tpl/风格名/Widget/目录下

如果模板文件放在ArticleWiget.class.php文件所在目录的Article文件夹下,则写法如下:

$this->display(dirname(__FILE__) . '/Article/articleList.html');

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
ThinkPHP模型详解
Jul 27 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 #PHP
PHP调用Mailgun发送邮件的方法
May 04 #PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 #PHP
Yii2数据库操作常用方法小结
May 04 #PHP
Yii2中添加全局函数的方法分析
May 04 #PHP
Yii2表单事件之Ajax提交实现方法
May 04 #PHP
PHP经典实用正则表达式小结
May 04 #PHP
You might like
PHP中其实也可以用方法链
2011/11/10 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
PDO::prepare讲解
2019/01/29 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
简单通用的JS滑动门代码
2008/12/19 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
python如何提升爬虫效率
2020/09/27 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
演讲稿怎么写
2014/01/07 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
研修第一天随笔感言
2014/02/15 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
岗位安全生产责任书
2014/07/28 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
贫困生助学金感谢信
2015/01/21 职场文书