0

我已经使用 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->widget('boots....); 这样的变量中时 并将 $table 变量用于“内容”参数,我收到一条错误消息,例如:TbDetailView 类的对象无法转换为字符串

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

4

2 回答 2

2

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

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

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

于 2013-07-04T01:15:37.947 回答
2

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

来自文档:

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

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

现在,您正在变量中捕获对象本身,试图回显一个对象。Echo 只适用于可以转换为字符串的东西。

于 2013-07-04T01:11:06.450 回答