Widget应用
一、创建Widget文件
关于这点,前面内容已经讲述过。特别在讲解开发规范、DoitPHP Tools使用说明时,已经讲的很清楚。可以参考前面内容。
二、Widget的应用
由于widget的基类(Widget Class)是继承了controller的基类(Controller Class)。所以开发Widget文件与开发Controller文件完全相似。所使用的方法也完全相同。注:由于widget是完成页面上一个区域的显示,所以setLayout()在widget开发中不支持。
若调用Widget文件,当视图文件为PHP时,直接在布局视图文件或控制器视图文件中使用widget()类方法即可,如:<?php $this->widget('calendar'); ?>;
当视图文件为HTML时,直接在视图文件中使用widget模板标签,如:<!—{widget calendar}—>
。
三、Widget的类方法简介
1、_getWidgetName()
获取当前Widget的名称。注:本类方法只能在widget开发文件中使用。参数为空。
使用举例:
- 例一、
- echo $this->_getWidgetName();
注:关于Widget的其它类方法请参考前面所讲的DoitPHP的Controller的应用中相关的类方法介绍。
四、Widget的使用举例
1、Widget的缓存使用
- class DemoWidget extends Widget {
- /**
- * Main method
- *
- * @access public
- * @param array $params 参数
- * @return string
- */
- public function renderContent($params = null) {
- //Widget的视图缓存文件的调用非同于Controller中的
- if($this->cache()) {
- return true;
- }
- ...
- $this->assign(array(
- ...
- ));
- $this->display();
- }
- }
Widget中缓存文件的调用代码,非同于Controller中缓存文件的调用。在Controller中视图缓存文件的调用,只需在Action()中开始处:$this->cache();一句代码直接搞定,如果当前controller,当前action有视图缓存文件(在缓存生命周期内),则直接加载视图的缓存文件并且exit(); 而在widget中,如果当前Widget有视图缓存文件(在缓存生命周期内),直接加载可行,如果还要exit();则整个页面恐怕只显示这个挂件内容,页面信息显示不完全,所以不能用exit();所以注定了Widget使用缓存时代码处理非同于Controller中的缓存文件的代码处理。
原文: http://www.doitphp.com/index/documentation/?articleid=23