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面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
php使用codebase生成随机数
Mar 25 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
Yii框架应用组件用法实例分析
May 15 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
example2.php
2006/10/09 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
jquery自定义表格样式
2015/11/23 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
浅谈Vue.js
2017/03/02 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
Python中的pass语句使用方法讲解
2015/05/14 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python最长回文串算法
2018/06/04 Python
Django组件content-type使用方法详解
2019/07/19 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
python与js主要区别点总结
2020/09/13 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
2014年廉洁自律承诺书
2014/05/26 职场文书
家装业务员岗位职责
2015/04/03 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
Python读取和写入Excel数据
2022/04/20 Python