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定时删除文件夹下文件(清理缓存文件)
Jan 23 PHP
深入解析php中的foreach函数
Aug 31 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
PHP类的特性实例分析
Sep 28 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
php json相关函数用法示例
Mar 28 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 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 编程安全性小结
2010/01/08 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
JS 遮照层实现代码
2010/03/31 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
实例讲解React 组件
2020/07/07 Javascript
python爬虫实例详解
2018/06/19 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python的几种主动结束程序方式
2019/11/22 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
巾帼建功标兵事迹材料
2014/05/11 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
综合实践活动报告
2015/02/05 职场文书
谢师宴学生致辞
2015/07/27 职场文书
校运会班级霸气口号
2015/12/24 职场文书
业余无线电通联Q语
2022/02/18 无线电
关于vue-router-link选择样式设置
2022/04/30 Vue.js