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.ini中文版(1)
Oct 09 PHP
一个简易需要注册的留言版程序
Oct 09 PHP
php查看session内容的函数
Aug 27 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 PHP
php array_walk() 数组函数
Jul 12 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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 strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
动态表格Table类的实现
2009/08/26 Javascript
异步加载script的代码
2011/01/12 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
为什么要做架构设计
2015/07/08 面试题
教育学专业毕业生的自我评价
2013/11/21 职场文书
《搭石》教学反思
2014/04/07 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
小学数学教师研修日志
2015/11/13 职场文书
小学英语课教学反思
2016/02/15 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android