I've read this in the Guide:
<?php $this->beginWidget('path.to.WidgetClass'); ?> ...body content that may be captured by the widget... <?php $this->endWidget(); ?>
How do i use this content?? Is there a way to use it?
Thanks
I've read this in the Guide:
<?php $this->beginWidget('path.to.WidgetClass'); ?> ...body content that may be captured by the widget... <?php $this->endWidget(); ?>
How do i use this content?? Is there a way to use it?
Thanks
You can call ob_start() in init() and then get the body content in run() by using ob_get_clean()
It doesn't work, the text has been writed twice.
example code:
class ClockRefresh extends CWidget { public $time = 1000; public $url = null; public $updateAtStart = false; public $containerCssClass = null; public function init(){ ob_start(); } public function run(){ $id = $this->getId(); echo "<div id="$id""; if ($this->containerCssClass){ echo ' class="' . $this->containerCssClass . '"'; } echo '>'; echo ob_get_clean(); echo ('</div>'); } }
And the extension call is:
<?php $this->beginWidget('application.extensions.timerext.ClockRefresh', array( 'time'=>1000, 'url'=>$this->createUrl('site/updateItem'), 'updateAtStart'=>true)); ?> loading... <?php $this->endWidget();?>
it shows: loading…
loading... <div id="yw0"></div>
instead of:
<div id="yw0">loading...</div>
Your logic is not right here because you are also capturing the tags you render in run(). You should move those code before ob_start().
It Works!!!
Thanks Qiang!!!
Sorry to reopen this post but I have problems with my extensions, I cannot render two instances of an HTML layer from a Class in a view (http://www.yiiframework.com/extension/egmap/) explained a workaround, but why I cannot render two HTML layers even if I create two different objects from the same class?
Mind sharing your solution Sebas? Why did it work?
Thanks
Forget my last post, I have already found a solution and also mdomba pointing me for some strange HTML behaviour with GMaps. Nothing to do with ob_get_contents
Thanks anyway