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 に答える