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初学者头疼问题总结
Jul 08 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
php实现可逆加密的方法
Aug 11 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
php异常处理捕获错误整理
Sep 23 PHP
PHP实现简易图形计算器
Aug 28 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你的验证码安全码?
2007/01/02 PHP
php与paypal整合方法
2010/11/28 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
Python简单的制作图片验证码实例
2017/05/31 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
django2.0扩展用户字段示例
2019/02/13 Python
python pandas时序处理相关功能详解
2019/07/03 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
计算机专业推荐信范文
2013/11/27 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
创先争优个人承诺书
2014/08/30 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
学雷锋感言
2015/08/03 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
七个非常实用的Python工具包总结
2021/06/15 Python
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript