2013-01-04 25 views
1

如何在Yii的CJuiTabs中將小部件的輸出作爲內容傳遞?如何在Yii的CJuiTabs中傳遞widget的輸出內容?

在這裏,我嘗試和得到的代碼錯誤:

$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

回答

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

我沒有測試,並且可能需要修補!

+0

我也發現這個:http://yiibook.blogspot.nl/2012/09/handle-cjuitabs-in-yii.html我會試試這兩個。 –

+0

我測試他們Stu和兩個都沒問題。 –

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, 
), 
+0

這很好,但它看起來像選項卡中的內容失去其風格,例如,鏈接不再是藍色。 –

+0

@Pat我想你的問題是CSS相關的。每個選項卡的html內容將從其父項繼承大量樣式。嘗試一些瀏覽器級別的debbuger(F12) – rodrigovr

0

以下是可以的。

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