thinkPHP下的widget扩展用法实例分析


Posted in PHP onDecember 26, 2015

本文实例讲述了thinkPHP下的widget扩展用法。分享给大家供大家参考,具体如下:

Widget扩展用于在页面根据需要输出不同的内容,Widget扩展的定义是在项目的Lib\Widget目录下面定义Widget类库,例如下面定义了一个用于显示最近的评论的Widget:

位于Lib\Widget\ShowCommentWidget.class.php

Widget类库需要继承Widget类,并且必须定义render方法实现,例如:

render方法必须使用return返回要输出的字符串信息,而不是直接输出。

Widget也可以调用Widget类的renderFile方法,渲染模板后进行输出。

在项目的lib目录下建立widget目录,与action目录同级。

建立TestWidget.class.php:

class TestWidget extends Widget{
  public function render($data){
    //print_r($data);
    $data['id']=$data['id'];
    $data['info']=$data['info'];
    $content = $this->renderFile('index',$data);
    //print_r($content);
    return $content;
  }
}

在此目录下建立对应的Test文件夹,下面放$this->rendFile调用的html页面。

index.html  通过使用循环显示数据的信息

<div>
  这是widget调用的模板页面
  <foreach name="id" item="vo"> <span style="color:#ff0000">//注意:id对应与$data的键值</span>
    {$vo}
  </foreach>
  <br>
  <foreach name="info" item="vo"> <span style="color:#ff0000">//info对应于$data的键值</span>
    <foreach name="vo" item="v">
      {$v}
    </foreach>
  </foreach>
</div>

action方法:

IndexAction.class.php

代码如下:

class TestAction extends Action{
  public function index(){
    $info=array(array("1","AA","title"),array("2","BB","title2"));
    $this->assign("info",$info);
    $this->display();
  }
}

action调用的tpl中的html页面的为index.html

代码如下:

<div>
这个是test调用的action<br>
{:W('Test',array("id"=>array("ID","name","title"),"info"=>$info))} <span style="color:#cc0000">//传递给TestWidget.class.php 的参数,要以array格式传递</span>
</div>

运行IndexAction.class.php

页面显示如下:

thinkPHP下的widget扩展用法实例分析

这样就把show.html中的内容包含进来了

name什么时候用widgte呢?

widget通常是一些封装好了的JS效果组件,直接调用‘加入参数就可以得到一些效果,例如,TAB菜单、旋转木马、图片轮播等交互效果 

比如网站的菜单栏。右边常不更新的栏目之类的…

方便多次调用,比如在页面上左侧显示一个新闻列表,每个页面如果都调用这个列表,是不是得在每个控制器里写一遍相同的代码,不累么,用widget可能只需要写一次,然后模板中多次使用

希望本文所述对大家基于thinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
PHP 字符串分割和比较
Oct 06 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
php输出xml必须header的解决方法
Oct 17 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
PHP7新特性
Mar 09 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 #PHP
thinkPHP中分页用法实例分析
Dec 26 #PHP
thinkPHP中验证码的简单使用方法
Dec 26 #PHP
分享50个提高PHP执行效率的技巧
Dec 26 #PHP
PHP获取二维数组中某一列的值集合
Dec 25 #PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 #PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 #PHP
You might like
php session 错误
2009/05/21 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
javascript的BOM
2016/05/03 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
layui实现数据表格点击搜索功能
2020/03/26 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
快速入门python学习笔记
2017/12/06 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
董事长岗位职责
2013/11/30 职场文书
大家访活动实施方案
2014/03/10 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
个人汇报材料范文
2014/12/30 职场文书
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL
Java 死锁解决方案
2022/05/11 Java/Android