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编程中字符串处理的5个技巧小结
Nov 13 PHP
php 获取客户端的真实ip
Nov 30 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
php使用正则表达式获取图片url的方法
Jan 16 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
使用PHPExcel导出Excel表
Sep 08 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处理json时中文问题的解决方法
2011/04/12 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
python解析xml模块封装代码
2014/02/07 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
python方向键控制上下左右代码
2018/01/20 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python logging模块用法示例
2018/08/28 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Python程序慢的重要原因
2020/09/04 Python
python接口自动化框架实战
2020/12/23 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
水务局局长岗位职责
2013/11/28 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
公司担保书格式范文
2014/05/12 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
python脚本框架webpy模板赋值实现
2021/11/20 Python