ThinkPHP官网首页

ENGLISH

Manual

6.6 Widget扩展

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

位于Lib\Widget\ShowCommentWidget.class.php

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



PHP代码


  1. class ShowCommentWidget extends Widget{    

  2.     public function render($data){    

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

  4.     }    

  5. }  



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

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



PHP代码


  1. class ShowCommentWidget extends Widget{    

  2.     public function render($data){    

  3. $content    =   $this->renderFile('Article:comment',$data);   

  4.   return $content;   

  5.     }    

  6. }  



定义好Widget类库后,只需要做的是在模板文件里面使用W方法调用Widget,例如




XML/HTML代码


  1. {:W('ShowComment')}  



通常Widget都有自己的调用参数来决定不同的输出内容



XML/HTML代码


  1. {:W('ShowComment',array('count'=>5))}  



参数必须使用索引数组传入。

在控制器里面也可以调用Widget类进行输出,在Action里面获取动态的Widget内容,可以使用下面的方式:



XML/HTML代码


  1. $content    =   W('ShowComment', array('count'=>5),true);  



第三个参数表示是否返回字符串,如果是false就表示直接输出。返回值可以用于其他用途。