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 相关文章推荐
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
php需登录的文件上传管理系统
Mar 21 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
PDO::errorInfo讲解
Jan 28 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中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
python实现抖音点赞功能
2019/04/07 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
家长学校工作方案
2014/05/07 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
圣诞节开幕词
2015/01/29 职场文书
人事专员岗位职责
2015/02/03 职场文书
学校财务管理制度
2015/08/04 职场文书
python爬虫--selenium模块
2021/03/31 Python
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
Redis基本数据类型String常用操作命令
2022/06/01 Redis