CGridView单元格中的renderPartial

时间:2012-09-05 11:10:55

标签: php gridview yii

我想在CGridView的单元格中渲染一个php视图文件。

因此我写了这段代码:

$this->widget('zii.widgets.grid.CGridView', array(
  'dataProvider'=>$dataProvider,
  'columns'=>array(
      array(
          'value'=>array($this, 'renderPartial("_lineProblems")')
      ))));

但是我收到了这个错误:

BookController and its behaviors do not have a method or closure named "renderPartial('_lineProblems' )".

堆栈跟踪显示了这个问题:

call_user_func_array(array(BookController, "renderPartial('_lineProblems' )"), array("data" => line, "row" => 0, 0 => CDataColumn))

我不明白这个错误。 $ this是BookController的一个实例,BookController是CController的子代。

1 个答案:

答案 0 :(得分:3)

在另一个Yii programmer

的帮助下找到了解决方案
$controller = $this;

$this->widget('zii.widgets.grid.CGridView', array(
  'dataProvider'=>$dataProvider,
  'columns'=>array(
      array(
          'name'=>'errors',
          'value'=>function($data, $row) use ($controller){
                return $controller->renderPartial('_lineProblems', array('errors'=>$data->errors), true);
          }
      )
  ),
));