UPDATE: See the comment from “Mario De Weerd” below. Although it works in the same way, his technique seems more elegant.
I am using Yii PHP Framework 1.1.7 for developing a site. I needed to insert EColorPicker widget inside the content of a tab in CJuiTabs. If $this->widget returned the generated string for embedding a widget, I could use the following code to achieve this:
echo $this->widget('zii.widgets.jui.CJuiTabs', array( 'tabs' => array( 'Size' => array('ajax' => array('sizeselection')), 'Background' => array('content' => $this->widget('application.extensions.colorpicker.EColorPicker', array( 'name'=>'cp', 'mode'=>'textfield', 'fade' => false, 'slide' => false, 'curtain' => true, ) );), //'Colors' => array('ajax' => array('colorselection')), 'Text' => array('ajax' => array('textselection')), ), // additional javascript options for the tabs plugin 'options' => array( 'collapsible' => true, ), ));
However, since $this->widget() does not return the string and echoes it instead, I had to do the following to achieve this:
ob_start(); $this->widget('application.extensions.colorpicker.EColorPicker', array( 'name'=>'cp', 'mode'=>'textfield', 'fade' => false, 'slide' => false, 'curtain' => true, ) ); $colorPicker = ob_get_contents(); ob_end_clean(); $this->widget('zii.widgets.jui.CJuiTabs', array( 'tabs' => array( 'Size' => array('ajax' => array('sizeselection')), 'Background' => array('content' => $colorPicker), //'Colors' => array('ajax' => array('colorselection')), 'Text' => array('ajax' => array('textselection')), ), // additional javascript options for the tabs plugin 'options' => array( 'collapsible' => true, ), ));
I don’t know if it is appropriate to use it like this, but in my case this worked fine.
Hope this helps.