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 实例化类的一点摘记
Mar 23 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
php简单检测404页面的方法示例
Aug 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和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php链表用法实例分析
2015/07/09 PHP
激活 ActiveX 控件
2006/10/09 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
nodeJS微信分享
2017/12/20 NodeJs
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
Python的两道面试题
2013/06/29 面试题
物业管理专业个人的自我评价
2013/11/19 职场文书
网页设计个人找工作求职信
2013/11/28 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
十佳少年事迹材料
2014/12/25 职场文书
党支部季度考核意见
2015/06/02 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
angular异步验证器防抖实例详解
2022/03/31 Javascript
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL