Yii php:在标签中显示小部件

时间:2013-07-04 00:49:00

标签: php arrays yii tabs widget

我一直在使用Yii框架已经有一段时间了,我一直很开心,尤其是这些小部件让开发更容易。我正在使用Yii bootsrap作为我的扩展程序..但是我在理解每个小部件的工作方式时遇到了一些麻烦。

我的问题是我如何在标签中显示小部件说TbDetailView? 我基本上想要以标签形式显示内容......但是其中一些是表格形式...有些是在列表,详细视图等。

我有这个小部件:

$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数组声明如下:

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

当我将小部件存储在变量中时,如$ table = $ this->小部件('boots ....); 并使用$ table变量作为'content'参数我得到一条错误消息,如: 类TbDetailView的对象无法转换为字符串

我似乎不太明白这是如何工作的......我需要帮助......谢谢:)

2 个答案:

答案 0 :(得分:2)

widget()函数采用的第三个参数用于将输出捕获到变量中,就像您尝试的那样。

来自文档:

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

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

现在,您正在尝试回显对象的变量中捕获对象本身。 Echo仅适用于可以转换为字符串的内容。

答案 1 :(得分:2)

您可以直接在内容中使用renderPartial(),例如:

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

现在,yii将尝试呈现一个名为“_tabpage1.php”的文件,该文件应与呈现向导的视图位于同一文件夹中。您必须返回renderPartial生成的内容而不是直接呈现它,因此将第3个参数设置为true。