diff options
Diffstat (limited to 'framework/web/widgets/CClipWidget.php')
| -rw-r--r-- | framework/web/widgets/CClipWidget.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/framework/web/widgets/CClipWidget.php b/framework/web/widgets/CClipWidget.php new file mode 100644 index 0000000..d963947 --- /dev/null +++ b/framework/web/widgets/CClipWidget.php @@ -0,0 +1,53 @@ +<?php +/** + * CClipWidget class file. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.yiiframework.com/ + * @copyright Copyright © 2008-2011 Yii Software LLC + * @license http://www.yiiframework.com/license/ + */ + +/** + * CClipWidget records its content and makes it available elsewhere. + * + * Content rendered between its {@link init()} and {@link run()} calls are saved + * as a clip in the controller. The clip is named after the widget ID. + * + * See {@link CBaseController::beginClip} and {@link CBaseController::endClip} + * for a shortcut usage of CClipWidget. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id: CClipWidget.php 2799 2011-01-01 19:31:13Z qiang.xue $ + * @package system.web.widgets + * @since 1.0 + */ +class CClipWidget extends CWidget +{ + /** + * @var boolean whether to render the clip content in place. Defaults to false, + * meaning the captured clip will not be displayed. + */ + public $renderClip=false; + + /** + * Starts recording a clip. + */ + public function init() + { + ob_start(); + ob_implicit_flush(false); + } + + /** + * Ends recording a clip. + * This method stops output buffering and saves the rendering result as a named clip in the controller. + */ + public function run() + { + $clip=ob_get_clean(); + if($this->renderClip) + echo $clip; + $this->getController()->getClips()->add($this->getId(),$clip); + } +}
\ No newline at end of file |
