2013-12-23 28 views
0

假設我有CDetailView的碼如下面如何顯示在CDetailView的ListData()中的Yii

$this->widget('zii.widgets.CDetailView', array(
    'data'=>$model, 
    'attributes'=>array(
     'title',    
     'owner.name',  
     'description:html', 
     array(    
      'label'=>'City', 
      'type'=>'raw', 
      'value'=>'', // ??? How to insert here ListData function that it will display list of different cities 
     ), 
    ), 
)); 

現在,在上面的代碼中,我要插入其在列表中的數據陣列來城市列表。

$list = CHtml::listData($model->city, "city_id", "cities"); 

如果我繼續在$listprint_r()。它發出如下。

Array ([1] => London [2] => Paris [3] => New York) 

任何幫助將不勝感激。

謝謝。

回答

1
array(    
     'label'=>'City', 
     'type'=>'raw', 
     'value'=>implode('<br />', $list), 
     'type' => 'raw', 
    ), 
1

Value應該具有該列的值。所以你必須使用如下的filter

$this->widget('zii.widgets.CDetailView', array(
    'data'=>$model, 
    'attributes'=>array(
     'title',    
     'owner.name',  
     'description:html', 
     array(    
      'label'=>'City', 
      'type'=>'raw', 
      'value'=>$data->city_id, 
      'filter'=>CHtml::listData($model->city, "city_id", "cities") 

     ), 
    ), 
)); 
+0

當我使用'值'=> $ data-> city_id,它給出了一個未定義的錯誤,是$ data,其次如果我把'value'=> $ model-> city_id,它會打印只是我d號碼,但我不需要身份證號碼,我需要這個號碼的價值。 –

+0

因此,要打印城市的名稱,您必須在模型本身中獲取城市名稱。爲此,您必須在模型中定義一個變量來存儲city_name,並在您的查詢中獲取城市名稱,並使用別名「city_name」。然後你可以直接調用城市名稱作爲'$ data-> city_name' –

3

如果它當時沒有工作,你可以試試這個

'label'=>'City', 
      'type'=>'raw', 
      'value'=>array($model,'createListFunction'), 

,然後在你的模型類創建一個名稱的功能createListFunction

public function createListFunction($data,$row) 
{ 
//in this way you can access the corresponding attribute 
$myTitle=$data->title; 
// and finally you can return whatever you want to 
return CHtml::listData($model->city, "city_id", "cities"); 
} 
相關問題