0

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

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

4

1 回答 1

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)',
    ),
    ...
于 2013-07-08T15:00:47.057 回答