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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
php实现微信发红包
Dec 05 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
laravel批量生成假数据的方法
Oct 09 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 中的类
2006/10/09 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
jQuery Tools tooltip使用说明
2012/07/14 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
vue实现分页组件
2020/06/16 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python executemany的使用及注意事项
2017/03/13 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
python调用API实现智能回复机器人
2018/04/10 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
python字符串格式化方式解析
2019/10/19 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
2017新年晚会开幕词
2016/03/03 职场文书