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代码
Nov 27 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
Zend studio文件注释模板设置方法
Sep 29 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
PHP 读取和编写 XML
Nov 19 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
项目中应用Redis+Php的场景
May 22 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 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
JAVA/JSP学习系列之六
2006/10/09 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python获取mp3文件信息的方法
2015/06/15 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
经典的毕业生自荐信范文
2014/04/14 职场文书
班委竞选演讲稿
2014/04/28 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
慈善募捐倡议书
2015/04/27 职场文书
干部培训简讯
2015/07/20 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
background-position百分比原理详解
2021/05/08 HTML / CSS
Python Parser的用法
2021/05/12 Python
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python