2013-07-04 4 views
0

Я уже давно использую структуру Yii, и я действительно хорошо проводил время, особенно с этими виджетами, что облегчает процесс разработки. Я использую Yii bootsrap для своих расширений ... но у меня мало проблем с пониманием того, как работает каждый виджет.Yii php: отображение виджета на вкладке

Мой вопрос: как я могу отобразить виджет, скажем, 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-> ('boots ....); и использовать переменную $ таблицы для параметра «содержание» я получаю сообщение об ошибке, как: объект класса TbDetailView не может быть преобразован в строку

Я не совсем, кажется, понимают, как это работает ... я нужна помощь. Спасибо :)

ответ

2

Вы можете использовать renderPartial() непосредственно в содержании, например:

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

Теперь юй будет пытаться оказывать файл «_tabpage1.php», который должен находиться в той же папке, что и вид отдавая мастер. Вы должны вернуть то, что renderPartial генерирует вместо прямого его отображения, поэтому для 3-го параметра установите значение true.

+0

это право! почему я не подумал об этом ... ха-ха .. спасибо! :) творит чудеса – muffin

2

Третий параметр, который выполняет функция widget(), используется для захвата вывода в переменную, как вы пытаетесь сделать.

из документации:

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

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

Прямо сейчас вы захватить сам объект в переменной пытается подпевать из объекта. Echo работает только для вещей, которые могут быть переданы в строку.

+0

Да, спасибо .. – muffin

Смежные вопросы