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 广告调用类代码(支持Flash调用)
Aug 11 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
浅谈php冒泡排序
Dec 30 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
php ajax实现文件上传进度条
Mar 29 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
php设计模式之单例模式用法经典示例分析
Sep 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
js闭包用法实例详解
2016/12/13 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用gRPC传输协议教程
2018/10/16 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
基于python3生成标签云代码解析
2020/02/18 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
EJB的激活机制
2013/10/25 面试题
室内设计专业学生的自我评价分享
2013/11/27 职场文书
运动会稿件50字
2014/02/17 职场文书
会计工作决心书
2014/03/11 职场文书
人力资源职位说明书
2014/07/29 职场文书
建议书范文
2015/02/05 职场文书
董事长年会致辞
2015/07/29 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏