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的call_user_func传reference引发的思考
Jul 23 PHP
php笔记之:php数组相关函数的使用
Apr 26 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
php中chdir()函数用法实例
Nov 13 PHP
简单谈谈PHP中的trait
Feb 25 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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 UTF8编码内的繁简转换类
2009/07/20 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
vue实现通讯录功能
2018/07/14 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
原生js生成图片验证码
2020/10/11 Javascript
Python学习资料
2007/02/08 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python list多级排序知识点总结
2019/10/23 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
大学生心理活动总结
2014/07/04 职场文书
公司更名通知函
2015/04/24 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
你会写请假条吗?
2019/06/26 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS