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 相关文章推荐
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP中cookies使用指南
2007/03/16 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
Python isinstance函数介绍
2015/04/14 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
C语言基础笔试题
2013/04/27 面试题
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
讲党性心得体会
2014/09/03 职场文书
精神病医院见习报告
2014/11/03 职场文书
财务人员岗位职责
2015/02/03 职场文书
资料员岗位职责范本
2015/04/13 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android