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 相关文章推荐
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
PHP中的Streams详细介绍
Nov 12 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
joomla组件开发入门教程
May 04 PHP
Mac系统下安装PHP Xdebug
Mar 30 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预定义常量
2006/12/25 PHP
使用php计算排列组合的方法
2013/11/13 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
小程序实现密码输入框
2020/11/16 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
用Python输出一个杨辉三角的例子
2014/06/13 Python
python删除过期文件的方法
2015/05/29 Python
Python iter()函数用法实例分析
2018/03/17 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python接口自动化框架实战
2020/12/23 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
小学生自我鉴定
2013/10/12 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
高中校园广播稿
2014/10/21 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
八年级作文之感恩
2019/11/22 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android