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 相关文章推荐
数据库相关问题
Oct 09 PHP
How do I change MySQL timezone?
Mar 26 PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php jsonp单引号转义
Nov 23 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
PHP区块查询实现方法分析
May 12 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
Python脚本获取操作系统版本信息
2016/12/17 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Python requests获取网页常用方法解析
2020/02/20 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
用友笔试题目
2016/10/25 面试题
英文版辞职信
2015/02/28 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
中学教师教学工作总结
2015/08/13 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript