Widget扩展用于在页面根据需要输出不同的内容,Widget扩展的定义是在项目的Lib/Widget目录下面定义Widget类库,例如下面定义了一个用于显示最近的评论的Widget,位于Lib/Widget/ShowCommentWidget.class.php。
Widget类库需要继承Widget类,并且必须定义render方法实现,例如:
Widget也可以调用Widget类的renderFile方法,渲染模板后进行输出。
如果使用了renderFile方法调用了模板,那么在模板中就可以使用:
{$count} 来输出w方法传入的变量。
如果w方法传入的数据是
可以理解成W方法传入的参数是
array('模板变量1'=>值1,'模板变量2'=>'值2'…)
注意:模板中的变量由renderFile方法的var变量决定 ,并非取决于W方法传入的参数,render方法本身可以对W方法传入的参数进行处理后传给renderFile方法,尽管大多数情况下都是直接传入data变量到renderFile方法中去。
在控制器里面也可以调用Widget类进行输出,在Action里面获取动态的Widget内容,可以使用下面的方式:
Widget的模板文件单独存放,放置到当前项目的Lib/Widget/ShowComment/目录下面,取决于rendFile方法如何调用,默认情况下,是调用和widget同名的模板文件,例如当前Widget是ShowCommentWidget,其中代码如下:
如果调用
如果需要调用子目录下面的模板,则采用
Widget类库需要继承Widget类,并且必须定义render方法实现,例如:
- class ShowCommentWidget extends Widget{
- public function render($data){
- return '这是最新的评论信息';
- }
- }
Widget也可以调用Widget类的renderFile方法,渲染模板后进行输出。
- class ShowCommentWidget extends Widget{
- public function render($data){
- $content = $this->renderFile('comment',$data);
- return $content;
- }
- }
- {:W('ShowComment')}
- {:W('ShowComment',array('count'=>5))}
如果使用了renderFile方法调用了模板,那么在模板中就可以使用:
{$count} 来输出w方法传入的变量。
如果w方法传入的数据是
- array('id'=>5,'name'=>'thinkphp');
可以理解成W方法传入的参数是
array('模板变量1'=>值1,'模板变量2'=>'值2'…)
注意:模板中的变量由renderFile方法的var变量决定 ,并非取决于W方法传入的参数,render方法本身可以对W方法传入的参数进行处理后传给renderFile方法,尽管大多数情况下都是直接传入data变量到renderFile方法中去。
在控制器里面也可以调用Widget类进行输出,在Action里面获取动态的Widget内容,可以使用下面的方式:
- $content = W('ShowComment', array('count'=>5),true);
Widget的模板文件单独存放,放置到当前项目的Lib/Widget/ShowComment/目录下面,取决于rendFile方法如何调用,默认情况下,是调用和widget同名的模板文件,例如当前Widget是ShowCommentWidget,其中代码如下:
- $this->renderFile();
如果调用
- $this->renderFile('comment');
如果需要调用子目录下面的模板,则采用
- $this->renderFile('article/comment');
调用的widget模板则位于 Lib/Widget/ShowComment/article/comment.html。
转载自:http://doc.thinkphp.cn/manual/widget_extend.html