Thinkphp 框架扩展之Widget扩展实现方法分析


Posted in PHP onApril 23, 2020

本文实例讲述了Thinkphp 框架扩展之Widget扩展实现方法。分享给大家供大家参考,具体如下:

Widget扩展

Widget扩展一般用于页面组件的扩展。

举个例子,我们在页面中实现一个分类显示的Widget,首先我们要定义一个Widget控制器层 CateWidget,如下:

namespace Home\Widget;
use Think\Controller;
class CateWidget extends Controller {
  public function menu(){
    echo 'menuWidget';
  }
}

然后,我们在模版中通过W方法调用这个Widget。

{:W('Cate/Menu')}

执行后的输出结果是:

menuWidget

传入参数

如果需要在调用Widget的时候 使用参数,可以这样定义:

namespace Home\Widget;
use Think\Controller;
class CateWidget extends Controller {
  public function menu($id,$name){
    echo $id.':'.$name;
  }
}

模版中的参数调用,使用:

{:W('Cate/Menu',array(5,'thinkphp'))}

传入的参数是一个数组,顺序对应了menu方法定义的参数顺序。

则会输出

5:thinkphp

模板支持

Widget可以支持使用独立的模板,例如:

namespace Home\Widget;
use Think\Controller;
class CateWidget extends Controller {
  public function menu(){
    $menu = M('Cate')->getField('id,title');
    $this->assign('menu',$menu);
    $this->display('Cate:menu');
  }
}

CateWiget类渲染了一个模版文件 View/Cate/menu.html。 在menu.html模版文件中的用法:

<foreach name="menu" item="title">
{$key}:{$title}
</foreach>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP分页显示制作详细讲解
Oct 09 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php 使用array函数实现分页
Feb 13 PHP
php生成zip文件类实例
Apr 07 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
Apr 20 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 #PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 23 #PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 #PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 #PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 #PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 #PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 #PHP
You might like
使用PHP制作新闻系统的思路
2006/10/09 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
js判断浏览器类型的方法
2013/08/07 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
python实现socket端口重定向示例
2014/02/10 Python
Python中return语句用法实例分析
2015/08/04 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python函数不定长参数使用方法解析
2019/12/14 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
详解django中Template语言
2020/02/22 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
python爬虫工具例举说明
2020/11/30 Python
用python读取xlsx文件
2020/12/17 Python
印度服装购物网站:Limeroad
2018/09/26 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
人事任命书范文
2014/06/04 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
教师个人事迹材料
2014/12/17 职场文书
python之django路由和视图案例教程
2021/07/26 Python
Redis如何实现分布式锁
2021/08/23 Redis