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 smarty模版引擎中的缓存应用
Dec 11 PHP
php中隐形字符65279(utf-8的BOM头)问题
Aug 16 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
详解YII关联查询
Jan 10 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
php慢查询日志和错误日志使用详解
Feb 27 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
php基础学习之变量的使用
2011/06/09 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP处理会话函数大总结
2015/08/05 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
实习老师离校感言
2014/02/03 职场文书
关爱老人标语
2014/06/21 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android