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

时间:2013-01-04 18:09:30

标签: 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,
        '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类的对象无法转换为字符串

编辑:除了斯图的答案,我发现了这一点:http://yiibook.blogspot.nl/2012/09/handle-cjuitabs-in-yii.html

3 个答案:

答案 0 :(得分:2)

是的,内容需要一个字符串,而小部件不会返回一个字符串。我在这里找到了这篇博文:http://mrhandscode.blogspot.com/2012/03/insert-widget-to-another-widget-in-yii.html

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

你可以用这样的东西来实现它:

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,
    ),
));

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

答案 1 :(得分:1)

您可以将$ this-> widget()的第二个参数设置为true,这样该方法将返回窗口小部件的内容,而不是回显它。

$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,
),

答案 2 :(得分:0)

下面没问题。

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