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新手上路(六)
Oct 09 PHP
smarty 原来也不过如此~~呵呵
Nov 25 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
php查询whois信息的方法
Jun 08 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP扩展mcrypt实现的AES加密功能示例
Jan 29 PHP
php实现的顺序线性表示例
May 04 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的FTP学习(二)
2006/10/09 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
Python中super函数用法实例分析
2019/03/18 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
学前教育学生自荐信范文
2013/12/31 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
体育之星事迹材料
2014/05/11 职场文书
团日活动总结报告
2014/06/25 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
2014年售票员工作总结
2014/11/19 职场文书
电信营业员岗位职责
2015/04/14 职场文书
故意杀人案辩护词
2015/05/21 职场文书
实施意见格式范本
2015/06/05 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
Django一小时写出账号密码管理系统
2021/04/29 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
2021/10/16 Python