如何将小部件的输出作为内容传递到Yii中的CJuiTabs中?

如何将小部件的输出作为内容传递到Yii中的CJuiTabs中?,tabs,yii,widget,cjuitabs,Tabs,Yii,Widget,Cjuitabs,如何将小部件的输出作为内容传递到Yii中的CJuiTabs中 这里是我尝试的代码,但出现错误: $this->widget('zii.widgets.jui.CJuiTabs',array( 'tabs'=>array( 'Tab1'=> array('content' => $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$vulnerdataProvider

如何将小部件的输出作为内容传递到Yii中的CJuiTabs中

这里是我尝试的代码,但出现错误:

$this->widget('zii.widgets.jui.CJuiTabs',array(
'tabs'=>array(
    'Tab1'=> array('content' => $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$vulnerdataProvider,
        'itemView'=>'_latest_vulner' )),
        'id' => 'tab1'),
    'tab2'=>array('content'=>'Content for tab 2', 'id'=>'tab2'),
),
// additional javascript options for the tabs plugin
'options'=>array(
    'collapsible'=>true,
),
)))

它给出了以下错误:

类CListView的对象无法转换为字符串


编辑:和斯图的答案一样,我发现了这个:

是的,内容需要字符串,而小部件不返回字符串。我在这里找到了这篇博客:

所有者找到了一种解决这个问题的非常创新的方法,使用输出缓冲来收集一个小部件的输出,然后将其插入到第二个小部件中

您可以通过以下方式实现:

ob_start();
$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$vulnerdataProvider,
    'itemView'=>'_latest_vulner'
));
$tab1Content=ob_get_contents();
ob_end_clean();

$this->widget('zii.widgets.jui.CJuiTabs',array(
    'tabs'=>array(
        'Tab1'=> array('content' => $tab1Content,'id' => 'tab1'),
        'tab2'=>array('content'=>'Content for tab 2', 'id'=>'tab2'),
    ),
    // additional javascript options for the tabs plugin
    'options'=>array(
        'collapsible'=>true,
    ),
));

我还没有测试,可能需要修补

您可以将$this->widget()的第二个参数设置为true,这样该方法将返回widget的内容,并返回回显

$this->widget('zii.widgets.jui.CJuiTabs',array(
'tabs'=>array(
    'Tab1'=> array('content' => $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$vulnerdataProvider,
        'itemView'=>'_latest_vulner' ), true),
        'id' => 'tab1'),
    'tab2'=>array('content'=>'Content for tab 2', 'id'=>'tab2'),
),
// additional javascript options for the tabs plugin
'options'=>array(
    'collapsible'=>true,
),
下面是好的

'Tab1'=> array('content' => $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$vulnerdataProvider,
    'itemView'=>'_latest_vulner' ), true)

我还发现:我将两个都尝试。我测试了它们,斯图,两个都可以。这很好,但选项卡中的内容似乎失去了样式,例如,链接不再是蓝色的。@Pat我想你的问题与CSS有关。每个选项卡的html内容将从其父选项卡继承许多样式。尝试一些浏览器级别的debbuger(F12)