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 相关文章推荐
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
openPNE常用方法分享
Nov 29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
PHP文件与目录操作示例
Dec 24 PHP
实例解析php的数据类型
Oct 24 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python实现简单中文词频统计示例
2017/11/08 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
捷克玩具商店:Bambule
2019/02/23 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
我的长生果教学反思
2014/04/28 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
世界遗产导游词
2015/02/13 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书