我正在使用yii,我想在cgridview中显示数组的结果 Cgridview代码说
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>$dataProviderObj,
//'filter'=>$model,
'columns'=>array(
'companyName',
array(
'header'=>'Products',
'value'=>'$data->usersproducts',
),
现在 usersproducts 是维护访问者和产品之间多对多关系的关系名称
通常,如果我想从 $ data-> usersproducts 获取数据 我会这样做
foreach($data->usersproducts as $record)
{
echo $record->productName;
}
但我不知道如何在cgrid视图中获取这些数据,因为foreach在CGridView数组中不起作用?
我知道我可以使用($ this,functionName)并返回结果,但我只想在数组中执行此操作。可能吗?如果是这样我该怎么办?
答案 0 :(得分:5)
在$ data对象上,创建一个方法来获取所描述的所有产品名称。
public function getUserProductNames()
{
$ret = "";
$first = true;
foreach ($this->userproducts as $record) {
if ($first === true) {
$first = false;
} else {
$ret .= ', ';
}
$ret .= $record->productName;
}
return $ret;
}
然后在您的CGridView配置中,您可以使用:
'value'=>'$data->getUserProductNames()'