Yii在CGridView中使用ItemAlias

时间:2013-07-08 14:11:23

标签: php yii

我使用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]

有人能指出我正确的方向来显示标签而不是价值的关键吗?谢谢!

1 个答案:

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