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 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
phpstudy的php版本自由修改的方法
Oct 18 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PDO::prepare讲解
Jan 29 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 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
文件上传类
2006/10/09 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
js Flash插入函数免激活代码
2009/03/31 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
详解JS函数防抖
2020/06/05 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
Python编程实现的简单Web服务器示例
2017/06/22 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
python sorted函数的小练习及解答
2019/09/18 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
西门豹教学反思
2014/02/04 职场文书
大专学生求职信
2014/07/04 职场文书
农业项目建议书
2014/08/25 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
Nginx内网单机反向代理的实现
2021/11/07 Servers