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 相关文章推荐
用PHP读取IMAP邮件
Oct 09 PHP
PHP常用代码
Nov 23 PHP
PHP与SQL注入攻击[二]
Apr 17 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
浅谈python迭代器
2017/11/08 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
Python分类测试代码实例汇总
2020/07/23 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
办公室内勤工作职责
2013/12/11 职场文书
往来会计岗位职责
2013/12/19 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
深入详解JS函数的柯里化
2021/06/09 Javascript