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中实现进程间通讯
Oct 09 PHP
PHP调用三种数据库的方法(2)
Oct 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php将时间差转换为字符串提示
Sep 07 PHP
php实现微信公众号无限群发
Oct 11 PHP
解读PHP中上传文件的处理问题
May 29 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
js代码实现微博导航栏
2015/07/30 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
Vue发布项目实例讲解
2019/07/17 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
Vue基础配置讲解
2019/11/29 Javascript
Python全局变量操作详解
2015/04/14 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
通过实例了解python property属性
2019/11/01 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
Python中qutip用法示例详解
2020/10/02 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
2014年教师节寄语
2014/08/11 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python