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者的疑难问答(1)
Oct 09 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
PHP类相关知识点实例总结
Sep 28 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
微信JSSDK分享功能图文实例详解
Apr 08 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)
2010/09/04 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
layui文件上传实现代码
2017/05/20 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
python随机取list中的元素方法
2018/04/08 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python常见数字运算操作实例小结
2019/03/22 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
keras得到每层的系数方式
2020/06/15 Python
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
九九重阳节标语
2014/10/07 职场文书
社区灵活就业证明
2014/11/03 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server