ThinkPHP的Widget扩展实例


Posted in PHP onJune 19, 2014

ThinkPHP的Widget扩展用于根据页面需要输出不同内容,它在项目目录中的Lib/Widget下定义。

具体定义如下:

class NewsListWidget extends Widget{
  public function render($data){
    // code...
  }
}

需要注意:

1.Widget是一个抽象类,其中有一个抽象方法(abstract)render,必须在子类中实现;
2.Widget的render方法必须使用return返回,而不是直接输出;
3.$data是传入Widget的参数。

然后我们可以在模板中直接调用这个Widget:

{:W('NewsList', array('tmpl' => 'a'))}

这里我传入了一个参数,这是比较常见的用法,Widget用来做什么?根据页面需要输出不同内容,这个不同内容,可以是数据不同,当然也可以是模板不同。

class NewsListWidget extends Widget{
  public function render($data){
    // code
    $news; // 这里可以是数据检索语句检索出来一个数据集
    $html = $this->renderFile($data['tmpl'], $news);
    return $html;
  }
}

这时候会自动渲染模板文件/Lib/Widget/NewsList/a.html的内容,并把$news传送过去,可以当普通模板文件处理,然后输出。

当然,还可以在Action控制器里面获取Widget的内容,进行二次加工。

$content = W('NewsList', array('tmpl' => 'a'), TRUE); // 第三个参数表示是否返回字符串,默认是FALSE,代表直接输出。

另外,ThinkPHP是MVC框架,请大家把数据检索相关的内容放在Model层

PHP 相关文章推荐
用文本作数据处理
Oct 09 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
php基础学习之变量的使用
Jun 09 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
laravel中命名路由的使用方法
Feb 24 PHP
ThinkPHP3.1的Widget新用法
Jun 19 #PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 #PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 #PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 #PHP
php定界符
Jun 19 #PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 #PHP
PHP两种去掉数组重复值的方法比较
Jun 19 #PHP
You might like
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
php HTML无刷新提交表单
2016/04/05 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js定时器实例分享
2016/12/20 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
Python中音频处理库pydub的使用教程
2017/06/07 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
品恩科技软件测试面试题
2014/10/26 面试题
数控技术专业推荐信
2013/11/01 职场文书
高校学生干部的自我评价分享
2013/11/04 职场文书
毕业学生推荐信
2013/12/01 职场文书
计算机毕业大学生推荐信
2013/12/01 职场文书
高分子材料与工程专业个人求职信
2013/12/15 职场文书
文员求职信
2014/07/15 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书