2013-08-27 111 views
1

我有一個關於Yii DropDownList的問題。我們如何給每個選項提供一些屬性值。例如,我需要構建一個如下所示的下拉列表。如何給Yii dropDownList中的每個選項賦予屬性值?

<select> 
    <option value="a" myAttribute="xyz">Calendar</option> 
    <option value="n" myAttribute="PQR">Shopping Cart</option> 
    <option value="c" myAttribute="ABC">CD</option> 
    <option value="d" myAttribute="HMN">Email</option> 
</select> 

值和myAttributes的值來自表。我如何通過改變以下內容來實現這一點?

<?php echo $form->dropDownList($model,'media_ids',Media::getAllmedia(),array('?'=>'?')); ?> 
模型媒體

我有功能類似這樣

public function getAllmedia() {  
     $condition = 'isActive = "Y"';  
     $model = Media::model()->findAll(array('condition' => $condition));  
     return CHtml::listData($model, 'id', 'media_title');  
    } 

編輯我的要求是與每個選項一同顯示圖像,我不得不放棄其他屬性的每個選項,保存圖像路徑

+0

你看到下面的東西,我建議? –

回答

1

你有listOption details答案,你必須實現其他功能像你這樣的選項值映射每個id這是圖像路徑的值:array(id => array(image_path_attribute => value),another_id =>(array(),...)例如,可以假定函數名是listImagePath(),它返回數組選項,但不要忘記,每個值都映射到不只一個屬性的數組

<?php echo $form->dropDownList($model,'media_ids',Media::getAllmedia(),array('options'=>Media::listImagePath())); ?> 
+0

我認爲這是N0nh4x0rツ應該接受的正確答案。也許他不完全理解它。也許下面的方法完成你的答案,並提高它的理解: –

3

CHtml :: dropDownList()不允許這樣做.. 嘗試創建一個像這樣的其他函數:

媒體類文件:

static function getAllmediaDDL($idSelected=null) { 
        $condition = 'isActive = "Y"'; 
        $model = Media::model()->findAll(array('condition' => $condition)); 

        $combo = CHtml::tag('select', array('id' => 'mySelect')); 
        foreach ($model as $value){ 
         $selected = $value->id == $idSelected? true : false; 
         $combo .= CHtml::tag('option', array('value' => $value->id, 'myattribute'=>$value->url_img, 'selected'=>$selected), CHtml::encode($value->media_title), true); 
        } 

        $combo .= CHtml::tag('select'); 
        return $combo; 

    } 

,並鑑於電話:

echo Media::getAllmediaDDL($model->id); // If you want to call in this way, you need to declare it as static function. 
+1

錯誤的答案.... – nu6A

+1

啊,現在我明白你需要什麼......我很抱歉。 我研究並回答你。 –

+0

好的兄弟,感謝您的時間.. – nu6A

-2

對不起,我仍然是初學者,但這是你在找什麼?

在_form:

<?php echo $form->dropDownListRow($model, 'status',array(0=>"Inactive",1=>"Active") 
    ); ?> 
+0

錯誤的答案.... – nu6A

+0

這可能是舊的答案,但這種方法將填充下拉選項中的值和標籤,這不是什麼被問到 – nosthertus

1

它的工作:

<?php 
    echo $form->dropDownList($model,'media_ids', 
       'data' => CHtml::listData(Media::model()->findAll(), 'id', 'name'), 
       array(
        'options' => CHtml::listData(Media::model()->findAll(), 'id', 'option_array') 
        ) 
    ); 
?> 

,並在型號:

public function getOption_array() { 
     return array('myAttribute' => $this->media_title); 
    } 
相關問題