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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
获得Google PR值的PHP代码
Jan 28 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP中读写文件实现代码
Oct 20 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP文件缓存类实现代码
Oct 26 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 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
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
深入理解Promise.all
2018/08/08 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
python的mysqldb安装步骤详解
2017/08/14 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
django 模版关闭转义方式
2020/05/14 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
小学生演讲稿
2014/01/12 职场文书
小学生新年寄语
2014/04/03 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL