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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
php学习之运算符相关概念
Jun 09 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
php数组分页实现方法
2016/04/30 PHP
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
Python实现网站注册验证码生成类
2017/06/08 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Django 静态文件配置过程详解
2019/07/23 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
技术副厂长岗位职责
2013/12/26 职场文书
优秀党员获奖感言
2014/02/18 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
优秀毕业生求职信
2014/06/05 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
离婚协议书样本
2015/01/26 职场文书
员工工作表扬信
2015/05/05 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
nginx日志格式分析和修改
2022/04/28 Servers