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桌面中心(四) 数据显示
Mar 11 PHP
php下MYSQL limit的优化
Jan 10 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
学习php分页代码实例
Oct 24 PHP
PHP中使用BigMap实例
Mar 30 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 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下MYSQL limit的优化
2008/01/10 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python八大排序算法速度实例对比
2017/12/06 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
django做form表单的数据验证过程详解
2019/07/26 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Python configparser模块常用方法解析
2020/05/22 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
爱国口号
2014/06/19 职场文书
三八节标语
2014/06/27 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android