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 self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
解析php中curl_multi的应用
Jul 17 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP导入导出Excel代码
Jul 07 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 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连接mssql:pdo odbc sql server
2011/07/20 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP attributes()函数讲解
2019/02/03 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
给同事的道歉信
2014/01/11 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
医德医魂心得体会
2014/09/11 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
理解深度学习之深度学习简介
2021/04/14 Python