如何在yii中显示cgridview中数组的值

时间:2013-11-30 09:59:26

标签: php yii cgridview

我正在使用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)并返回结果,但我只想在数组中执行此操作。可能吗?如果是这样我该怎么办?

1 个答案:

答案 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()'