2013-07-08 38 views
0
Yii中使用ItemAlias

我使用Yii的「ItemAlias」功能給一個自定義名稱的值,就像這樣:在CGridView

<?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,它目前顯示的數字(密鑰)它在數據庫中找到的貨幣,但我想顯示它的標籤。

<?php 

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'purchases-grid', 
    'dataProvider'=>$model->search(), 
    'columns'=>array(
    'id', 
    'name', 
    'currency', 
    [..etc] 

有人能指出我到正確的方向顯示標籤,而不是值的鍵:CGridView是這樣產生的?謝謝!

+0

'itemAlias'不是Yii功能。你使用任何提供它的擴展,或者你可能寫了'getCurrency()'getter方法?如果是後者,你應該展示它。 –

+0

它是由GII生成的模型的一部分。對不起,我對Yii有點缺乏經驗,這是一個練習項目:-) – dirk

+0

您必須使用一些擴展名。您不會在Yii源文件(包括gii)中的任何位置找到'itemAlias'。 (試試'grep -r itemAlias path/to/framework')。 –

回答

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