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 相关文章推荐
javascript,php获取函数参数对象的代码
Feb 03 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
php无序树实现方法
Jul 28 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
学习PHP Cookie处理函数
Aug 09 PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
laravel5.4生成验证码的实例讲解
Aug 05 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 函数使用可变数量的参数方法
2017/05/02 PHP
基于jquery的3d效果实现代码
2011/03/23 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
python文本数据相似度的度量
2018/03/12 Python
Windows下python3.7安装教程
2018/07/31 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python有参函数使用代码实例
2020/01/06 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
Python 解析简单的XML数据
2020/07/24 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
军训自我鉴定范文
2014/02/13 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
担保书范本
2015/01/20 职场文书
毕业实习证明范本
2015/06/16 职场文书
城南旧事读书笔记
2015/06/29 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python