【发布时间】:2015-07-06 09:32:34
【问题描述】:
我的一个控制器中有用于处理数据库的功能。 像这样的:
static function getCamByClassId($id)
{
$connection=Yii::app()->db;
$command=$connection->createCommand("some query");
$camReader=$command->query();
$camList=$command->queryAll();
return $camList;
}
我也在使用 zii 小部件。像这样:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'someId',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name' => 'Image',
'type' => 'raw',
'value' => 'CHtml::image("/uploads/thumb_".$data->Lesson_ID."_".$data->Image, "" ,array(\'width\'=>195, \'height\'=>110))',
,
),
...
),));
现在我需要在那里使用其他图片,这是通过这种方法获得的。
我试图替换 'value' 上的属性
'value' => 'CHtml::image(".$this->getCamByClassId($data->Lesson_ID)[0][\'Cam1\'].", "default image" ,array(\'width\'=>195, \'height\'=>110))',
然后我收到这个异常:
Property "CDataColumn.getCamByClassId" is not defined.
我看到将方法复制到 CDataColumn.php 中是没有意义的,因为它会查找属性并且我无法将方法返回值设置为此 calss 的某些属性,因为它的结果取决于 $id 参数。我如何将 getCamByClassId 的“值”属性结果传递给?
更新
好的,我可以像LessonController::getCamByClassId 一样使用它,但是我怎样才能通过$data->LessonId 呢?
UPDATE1
试过这个
'value' => 'CHtml::image(".$this->grid->controller->getCamByClassId($data->Lesson_ID).", "default image" ,array(\'width\'=>195, \'height\'=>110))',
它说:CGridView 类的对象无法转换为字符串 更新2 检查了topher的最后一个建议
'value' => function($data, $row) {
return CHtml::image(
LessonController::getCamByClassId($data->Lesson_ID)[0]['Cam1'],
"default image",
array('width'=>195, 'height'=>110)
);
}
我的错误:我有一个错字。现在它说 0 是未定义的偏移量,要调试它。
【问题讨论】: