2013-07-04 97 views
0

我一直在使用Yii框架一段時間,而且我一直非常享受這些小部件,讓開發更容易。我爲我的擴展使用Yii bootsrap ..但我在理解每個小部件的工作原理時遇到了一些麻煩。Yii php:在Tab中顯示小部件

我的問題是我如何顯示小部件說一個選項卡內的TbDetailView? 我基本上要在標籤中顯示的內容forms..however他們中的一些表的形式......有些是在列表中,detailviews等

我有這個小工具:

$this->widget('bootstrap.widgets.TbDetailView',array(
     'data'=>$model, 
     'attributes'=>$attributes1, 
     )); 

,我想把一個標籤

$this->widget('bootstrap.widgets.TbWizard', array(
    'tabs' => $tabs, 
    'type' => 'tabs', // 'tabs' or 'pills' 
    'options' => array(
     'onTabShow' => 'js:function(tab, navigation, index) { 
      var $total = navigation.find("li").length; 
      var $current = index+1; 
      var $percent = ($current/$total) * 100; 
      $("#wizard-bar > .bar").css({width:$percent+"%"}); 
     }', 
    ), 

內,我的$標籤數組聲明如下:

$tabs = array('studydetails' => 
array(
'id'=>'f1study-create-studydetails', 
'label' => 'Study Details', 
'content' =>//what do i put here?), 
... 
...); 

當我將這個小部件存儲在一個像$ table = $ this-> widget('boots ....)這樣的變量中時; 和使用$表變量的「內容」參數我得到這樣一個錯誤信息: Object類TbDetailView的不能轉換成字符串

我不太似乎明白了這是如何工作...我需要幫助..謝謝:)

回答

2

你可以在你的內容直接使用renderPartial(),像這樣:

'content'=>$this->renderPartial('_tabpage1', [] ,true), 

現在警予會嘗試呈現一個名爲「_tabpage1.php」文件,該文件應在同一文件夾的視圖顯示嚮導。您必須返回renderPartial生成的內容而不是直接渲染它,因此將第三個參數設置爲true。

+0

沒錯!爲什麼我沒有想到這個......哈哈..謝謝!:)創造奇蹟 – muffin

2

widget()函數需要的第三個參數是用來捕獲輸出到像你正在嘗試做的變量。

從文檔:

public mixed widget(string $className, array $properties=array (), boolean $captureOutput=false) 

$this->widget('class', array(options), true) 

現在你正在拍攝對象本身的變量試圖呼應出一個對象。回聲只適用於可以轉換爲字符串的東西。

+0

是的,謝謝你.. – muffin