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 相关文章推荐
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
PHP使用phpunit进行单元测试示例
Sep 23 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
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python中字符串的修改及传参详解
2016/11/30 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
django2 快速安装指南分享
2018/01/05 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python3数字求和的实例
2019/02/19 Python
pytorch梯度剪裁方式
2020/02/04 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
别名指示符是什么
2012/10/08 面试题
生日派对邀请函
2014/01/13 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
环保公益策划方案
2014/08/15 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
防溺水主题班会教案
2015/08/12 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python