我正在使用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',
),
Run Code Online (Sandbox Code Playgroud)
现在,usersproducts是维护访问者和产品之间多对多关系的关系名称
一般来说,如果我想从$ data-> usersproducts获取数据, 我会这样做
foreach($data->usersproducts as $record)
{
echo $record->productName;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在cgrid视图中获取此数据,因为foreach将无法在CGridView数组中工作?
我知道我可以使用($ this,functionName)并返回结果但我只想在数组中执行此操作.可能吗?如果是的话我怎么能这样做?
在$ data对象上,创建一个方法来获取所描述的所有产品名称.
public function getUserProductNames()
{
$ret = "";
$first = true;
foreach ($this->userproducts as $record) {
if ($first === true) {
$first = false;
} else {
$ret .= ', ';
}
$ret .= $record->productName;
}
return $ret;
}
Run Code Online (Sandbox Code Playgroud)
然后在您的CGridView配置中,您可以使用:
'value'=>'$data->getUserProductNames()'
Run Code Online (Sandbox Code Playgroud)