Yii助推器 - renderPartial一个popover的数据内容?

时间:2013-05-08 11:42:38

标签: twitter-bootstrap yii popover renderpartial

我正在使用Yii和YiiBooster扩展。我希望有这样的弹出窗口:

array(
        'header' => '',
        'value' => function($data)
        {
            $this->widget('bootstrap.widgets.TbButton', array(
                'label'=>'Inne',
                'type'=>'primary',
                'size' => 'mini',
                'htmlOptions'=>array(
                    'data-placement'=>'right', 
                    'data-content'=> "Controller::renderPartial('_statButtons', 
                                      array('data' => $data->idProject));", 
                    'rel'=>'popover'
                ),
            ));
        }
    ),

这是在gridview的单元格内。我想使用renderPartial呈现包含一些内容的文件,但上面的代码不起作用。我怎样才能实现它?

编辑: 如果代码exucutes(我的代码或@Ruslans代码),结果是:

Here is the text from the _statButtons partial file. End of this file.
<a id="yw2" class="btn btn-primary btn-mini" rel="popover" 
   data-placement="right" data-original-title="" title="">Inne</a>

1 个答案:

答案 0 :(得分:3)

波纹管代码有效。我使用PHP 5.3

'value' => function($data) use($controller)
{
    $controller->widget('bootstrap.widgets.TbButton', array(
        'label'=>'Inne',
        'type'=>'primary',
        'size' => 'mini',
        'htmlOptions'=>array(
            'data-placement'=>'right',
            'data-content'=> $controller->renderPartial('_test',
                      array('data' => $data->title), true),
            'rel'=>'popover'
        ),
    ));
}

其中$controller只是在呈现$this窗口小部件之前重新分配CGridView var。

$controller=$this;

因为在PHP 5.3中,闭包不能访问$this var

据我记忆,PHP 5.4可以访问$this

调用Controller::renderPartial(.... - 错误方法,因为renderPartial不是静态函数,而是静态调用。它应该引起错误,除非你把它关掉。