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中用hash实现的数组
Jul 17 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
五款PHP代码重构工具推荐
Oct 14 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP常用header头定义代码示例汇总
Aug 29 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将图片转换成base64编码的实现方法
2016/09/13 PHP
php实现映射操作实例详解
2019/10/02 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
信息专业本科生个人的自我评价
2013/10/28 职场文书
总经理任命书
2014/03/29 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
html5表单的required属性使用
2021/07/07 HTML / CSS
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS