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 相关文章推荐
PHP 判断常量,变量和函数是否存在
Apr 26 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
PHP验证码生成原理和实现
Jan 24 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 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
php mysql数据库操作类
2008/06/04 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
详解python调度框架APScheduler使用
2017/03/28 Python
Python中的pack和unpack的使用
2018/03/12 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
项目建议书格式
2014/03/12 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android