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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
php动态变量定义及使用
Jun 10 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 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比你想象的好得多
2014/11/27 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
javascript 计算两个整数的百分比值
2009/12/26 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
再论Javascript的类继承
2011/03/05 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python递归实现打印多重列表代码
2020/02/27 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
Python 内存管理机制全面分析
2021/01/16 Python
python爬取抖音视频的实例分析
2021/01/19 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
迟到检讨书1000字
2014/01/15 职场文书
农村婚礼主持词
2014/03/13 职场文书
联欢晚会主持词
2014/03/25 职场文书
我的中国心演讲稿
2014/09/04 职场文书
mysql 获取时间方式
2022/03/20 MySQL