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+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
thinkphp普通查询与表达式查询实例分析
Nov 24 PHP
PHP安全上传图片的方法
Mar 21 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 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
xajax写的留言本
2006/11/25 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
求职个人评价范文
2014/04/09 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers