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+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
php.ini修改php上传文件大小限制的方法详解
Jun 17 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP解决高并发的优化方案实例
Dec 10 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
解析PHP实现下载文件的两种方法
2013/07/05 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
laravel 数据验证规则详解
2019/10/23 PHP
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
python爬虫常用的模块分析
2014/08/29 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python 画条形图(柱状图)实例
2020/04/24 Python
python super()函数的基本使用
2020/09/10 Python
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
高中自我鉴定范文
2013/11/03 职场文书
婚庆司仪主持词
2014/03/15 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
教师暑期培训感言
2014/08/15 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
邀请书模板
2015/02/02 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
使用Redis实现分布式锁的方法
2022/06/16 Redis