我正在使用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>
答案 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
不是静态函数,而是静态调用。它应该引起错误,除非你把它关掉。