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 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
一个改进的UBB类
Oct 09 PHP
APMServ使用说明
Oct 23 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
PHP里的中文变量说明
Jul 23 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php以post形式发送xml的方法
Nov 04 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
关于PHP通用返回值设置方法
Mar 31 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
网页上facebook分享功能具体实现
2014/01/26 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
php分页函数完整实例代码
2014/09/22 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python中的json总结
2018/10/11 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python实现转圈打印矩阵
2019/03/02 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Python运行异常管理解决方案
2020/03/09 Python
django列表筛选功能的实现代码
2020/03/27 Python
python中if及if-else如何使用
2020/06/02 Python
美国电视购物:QVC
2017/02/06 全球购物
工会主席事迹材料
2014/06/03 职场文书
六五普法宣传标语
2014/10/06 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
利用Redis实现点赞功能的示例代码
2022/06/28 Redis