我使用Yii的'ItemAlias'函数为值赋予自定义名称,如下所示:
<?php
public static function itemAlias($type,$code=NULL) {
$_items = array(
'currency' => array(
'1'=>'US Dollar',
'2'=>'Euro',
'3'=>'GB Pound',
'4'=>'Chinese RMB',
'5'=>'Singaporese Dollar'
)
);
if (isset($code))
return isset($_items[$type][$code]) ? $_items[$type][$code] : false;
else
return isset($_items[$type]) ? $_items[$type] : false;
}
?>
现在,在CGridView中,它当前显示它在数据库中找到的货币的数量(键),但我想显示它的标签。 CGridView的生成如下:
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'purchases-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'id',
'name',
'currency',
[..etc]
有人能指出我正确的方向来显示标签而不是价值的关键吗?谢谢!
答案 0 :(得分:1)
基于您展示的有限代码,如果itemAlias()
是您模型中内置的函数,我认为这是您想要的:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'purchases-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'id',
'name',
array(
'name' => 'currency',
'value' => '$data->itemAlias("currency",$data->currency)',
),
...
如果它是某个通用功能,而不是模型的一部分,你可以这样做:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'purchases-grid',
'dataProvider'=>$model->search(),
'columns'=>array(
'id',
'name',
array(
'name' => 'currency',
'value' => 'itemAlias("currency",$data->currency)',
),
...