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之第五天
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
PHP中的use关键字概述
Jul 23 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
php提高脚本性能的4个技巧
Aug 18 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中的float类型使用说明
2010/07/27 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
pandas中的series数据类型详解
2019/07/06 Python
python如何实现异步调用函数执行
2019/07/08 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
python如何写try语句
2020/07/14 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
使用python求解迷宫问题的三种实现方法
2022/03/17 Python