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 相关文章推荐
深入了解php4(1)--回到未来
Oct 09 PHP
php你的验证码安全码?
Jan 02 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
php设计模式之命令模式的应用详解
May 21 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
Feb 02 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
php 处理png图片白色背景色改为透明色的实例代码
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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
PHP session 会话处理函数
2016/06/06 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
JS创建类和对象的两种不同方式
2014/08/08 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
在Python中编写数据库模块的教程
2015/04/29 Python
使用python加密自己的密码
2015/08/04 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
总结python中pass的作用
2019/02/27 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
六月份红领巾广播稿
2014/02/03 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
离婚答辩状怎么写
2015/05/22 职场文书