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 相关文章推荐
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
PHP扩展开发入门教程
Feb 26 PHP
php遍历树的常用方法汇总
Jun 18 PHP
浅谈PHP中output_buffering
Jul 13 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 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
ajax缓存问题解决途径
2006/12/06 PHP
实用函数7
2007/11/08 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
js常用DOM方法详解
2017/02/04 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
Python MD5文件生成码
2009/01/12 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
零件设计自荐信范文
2013/11/27 职场文书
新学期开学寄语
2014/01/18 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
农业项目建议书
2014/08/25 职场文书
中班教师个人总结
2015/02/05 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript