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实现WEB动态网页静态
Oct 09 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
php 保留小数点
Apr 21 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
PHP基于进程控制函数实现多线程
Dec 09 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
一个ftp类(ini.php)
2006/10/09 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
python如何导入依赖包
2020/07/13 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
工作疏忽检讨书
2014/01/25 职场文书
工程质量月活动方案
2014/02/19 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
网络营销计划
2015/01/17 职场文书
护理工作个人总结
2015/03/03 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
商场广播稿范文
2015/08/19 职场文书