如何将小部件的输出作为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
答案 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)