# Widget扩展

[上一页](# "上一页")[下一页](# "下一页")

Widget扩展用于在页面根据需要输出不同的内容,Widget扩展的定义是在项目的Lib/Widget目录下面定义Widget类库,例如下面定义了一个用于显示最近的评论的Widget,位于Lib/Widget/ShowCommentWidget.class.php。

Widget类库需要继承Widget类,并且必须定义render方法实现,例如:`classShowCommentWidgetextendsWidget{

publicfunctionrender($data){

return '这是最新的评论信息';

}

}`render方法必须使用return返回要输出的字符串信息,而不是直接输出。

Widget也可以调用Widget类的renderFile方法,渲染模板后进行输出。`classShowCommentWidgetextendsWidget{

publicfunctionrender($data){

$content = $this->renderFile('comment',$data);

return $content;

}

}`定义好Widget类库后,只需要做的是在模板文件里面使用W方法调用Widget,例如:`{:W('ShowComment')}`通常Widget都有自己的调用参数来决定不同的输出内容`{:W('ShowComment',array('count'=>5))}`参数必须使用索引数组传入。

如果使用了renderFile方法调用了模板,那么在模板中就可以使用:

{$count} 来输出w方法传入的变量。

如果w方法传入的数据是`array('id'=>5,'name'=>'thinkphp');`那么widget模板中就可以输出id和name两个变量。

可以理解成W方法传入的参数是

array('模板变量1'=>值1,'模板变量2'=>'值2'…)

注意:模板中的变量由renderFile方法的var变量决定 ,并非取决于W方法传入的参数,render方法本身可以对W方法传入的参数进行处理后传给renderFile方法,尽管大多数情况下都是直接传入data变量到renderFile方法中去。

在控制器里面也可以调用Widget类进行输出,在Action里面获取动态的Widget内容,可以使用下面的方式:`$content = W('ShowComment', array('count'=>5),true);`第三个参数表示是否返回字符串,如果是false就表示直接输出。返回值可以用于其他用途。

Widget的模板文件单独存放,放置到当前项目的Lib/Widget/ShowComment/目录下面,取决于rendFile方法如何调用,默认情况下,是调用和widget同名的模板文件,例如当前Widget是ShowCommentWidget,其中代码如下:`$this->renderFile();`则调用的widget模板位于 Lib/Widget/ShowComment/ShowComment.html,

如果调用`$this->renderFile('comment');`调用的widget模板则位于 Lib/Widget/ShowComment/comment.html,

如果需要调用子目录下面的模板,则采用`$this->renderFile('article/comment');`调用的widget模板则位于 Lib/Widget/ShowComment/article/comment.html。

[上一页](# "上一页")[下一页](# "下一页")

为什么用 php widget,13.6 Widget扩展相关推荐

  1. 关于iOS Widget(Locket Widget App)

    最近一款UI风格很像Clubhouse的App,功能简单到不能再简单的Locket app火了,其主要功能就是通过桌面Widget显示一张朋友分享的照片,死气沉沉的互联网上终于出现了一点新东西.其实w ...

  2. VTK修炼之道77:交互部件_分割/配准类Widget与其他Widget

    1.分割/配准交互部件 图像分割与配准是数字图像处理技术两大主要的应用领域,特别是在医学图像处理中. 著名的医学图像分割与配准工具包ITK(Insight Segmentation & Reg ...

  3. 【Flutter从入门到实战】⑪、豆瓣案例-1、星星评分Widget、虚线Widget、TabbarWidget、BottomNavigationBarItem的封装、初始化配置抽取

    Flutter从入门到实战 一共分为23个系列 ①(Flutter.Dart环境搭建篇) 共3个内容 已更新 ②(Dart语法1 篇) 共4个内容 已更新 ③(Dart语法2 篇) 共2个内容 已更新 ...

  4. Widget是一切,Widget简介

    写在前面 作为一个初学者,好像什么都不懂哦! 但是,我感觉Widget已经深深地刻入了我的心中,因为它在Flutter代码中真的是随处可见! 我百度了一番,翻译是小装置,真的是很可爱了! 所以,庞大的 ...

  5. Widget星球—widget web 网页Widget 最好的widget widget开发

    本文摘要: 而他们更切实的交汇点发生于比特层面.2005年以来,这三个人先后从不同角度介入到一种名为Widget的微不足道的技术中,并很可能依靠这种小则几百K.大则几兆的微型软件改变人们使用手机.社交 ...

  6. 为什么用 php widget,ThinkPHP的Widget扩展实例

    ThinkPHP的Widget扩展用于根据页面需要输出不同内容,它在项目目录中的Lib/Widget下定义. 具体定义如下: class NewsListWidget extends Widget{ ...

  7. 2.5.13 动态内存扩展AME

    最后更新2021/08/01 AME技术目的是压缩内存中的数据,因此减少物理内存使用量,从某种意义上提升系统IO性能.个人看来,这是个有毒无用的功能,因为AME的基础是用CPU的部分算力,尽管可以是额 ...

  8. qt widget 嵌套与弹出_Gtk widget 与 Qt Widget的相互嵌套

    简述 gtk qt窗口的相互嵌套.主要是使用了Gtk中的socket跟plug的模式,与Qt中的QX11EmbedContainer.这是两个不同的UI库的相互嵌套的方法.google了下发现有个老哥 ...

  9. android widget 布局,Android Widget Attributes——View

    最近因为想着重新把这个插件捡起来,把view的属性慢慢的全部补上,所以顺便了解一下各个属性,在这里列举View的属性,含义,以及代码设置. 简书Markdown编辑器实在是渣,只能把表格换成下面这种形 ...

最新文章

  1. BCP 导入导出数据库数据
  2. 用java分组查elasticsearch
  3. Android类参考---Fragment(一)
  4. Redis系列教程(四):Redis为什么是单线程、及高并发快的3大原因详解
  5. vue data数据修改_VUE的数据响应式
  6. JavaScript的gzip静态压缩方法记录
  7. matlab 中的矩阵分解
  8. 浏览器输入网址回车发生的事情?--
  9. python库build的那堆事儿之彩笔的划水历程
  10. 《NX-OS与Cisco Nexus交换技术:下一代数据中心架构(第2版)》一2.8 Cisco FabricPath...
  11. BlackBerry Internet Service故障:公司内部同事无法互通邮件,对外联络没有问题
  12. 逸仙电商将携Galenic法国科兰黎、EVE LOM参展进博会 | 进博会倒计时
  13. 【JavaWeb】书城项目之与数据库交互的登录案例实现
  14. 上周AI热点回顾:AI“模拟”出暗物质、AI挖掘毕加索秘密、CPU在大型神经网络超越V100 GPU...
  15. 汇编语言寻址方式总结
  16. codevs 2833 奇怪的梦境
  17. 首汽约车携手AWS,发布出行行业首个定制智能语音解决方案
  18. Win10安装程序无法正常启动怎么办【系统天地】
  19. linux删除一年前的文件,Shell脚本实现删除一年前文件功能分享
  20. Pinia全新一代状态管理工具Pinia-Vue3全家桶

热门文章

  1. 桌面云计算机的配置,Citrix桌面云实验环境的部署配置
  2. 基于javaweb的物资配送管理系统_智慧物流之RFID仓库管理系统,为传统的仓库管理带来了希望...
  3. MySQL中Myisam、InnoDB碎片优化
  4. python语句x 3 3执行_Python 3.x 学习笔记--杂
  5. 计算机专业office,2011 级计算机专业 Office 办公软件期末考试.doc
  6. 60多套html5移动端模板_美容整形高保真移动端原型模板发布
  7. mybatis注解动态sql_超全MyBatis动态SQL详解
  8. ip冲突 scan windows_Linux下IP 冲突查看及解决方法
  9. 【微信小程序】 自定义导航栏(navigationStyle=custom)
  10. 【Nginx】输出/返回 HelloWorld