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 heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
PHP 组件化编程技巧
Jun 06 PHP
php 生成饼图 三维饼图
Sep 28 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
PHP curl实现抓取302跳转后页面的示例
Jul 04 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python3.7.0的安装步骤
2018/08/27 Python
python os.path模块常用方法实例详解
2018/09/16 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Django返回HTML文件的实现方法
2020/09/17 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
Java和Javasciprt的区别
2012/09/02 面试题
趣味比赛活动方案
2014/02/15 职场文书
销售求职信范文
2014/05/26 职场文书
项目合作意向书模板
2014/07/29 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
安全生产协议书
2016/03/22 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python