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中mysql_connect与mysql_pconncet的区别详解
May 15 PHP
memcache命令启动参数中文解释
Jan 13 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
PHP date函数常用时间处理方法
May 11 PHP
php批量删除超链接的实现方法
Oct 19 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
PHP面向对象程序设计类的定义与用法简单示例
Dec 27 PHP
php 常用的系统函数
Feb 07 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 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/03 咖啡文化
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
HTML node相关的一些资料整理
2010/01/01 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
Python描述器descriptor详解
2015/02/03 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
解决python replace函数替换无效问题
2020/01/18 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
公司管理建议书范文
2014/03/12 职场文书
征兵宣传标语
2014/06/20 职场文书
超市理货员岗位职责
2014/07/04 职场文书
大学生自我评价范文
2015/03/03 职场文书
会计工作能力自我评价
2015/03/05 职场文书
兴趣班停课通知
2015/04/24 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS