Php 如何为Yii dropDownList中的每个选项指定属性值?

Php 如何为Yii dropDownList中的每个选项指定属性值?,php,yii,Php,Yii,我有一个关于Yii DropDownList的问题。我们如何为每个选项提供一些属性值。例如,我需要构建一个dropdownlist,如下所示 <select> <option value="a" myAttribute="xyz">Calendar</option> <option value="n" myAttribute="PQR">Shopping Cart</option> <option valu

我有一个关于Yii DropDownList的问题。我们如何为每个选项提供一些属性值。例如,我需要构建一个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>
编辑:我的要求是随每个选项一起显示图像,为此,我必须为保存图像路径的每个选项赋予另一个属性。。 尝试创建类似以下内容的其他函数:

媒体类文件:

    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.
答案在中,您必须实现另一个函数,就像您为选项值所做的那样,将每个id(值)映射到映像路径:例如,array(id=>array(image\u path\u attribute=>value),另一个\u id=>(array(),…),以避免假设函数名为
listImagePath()
返回选项数组,但不要忘记每个值都映射到属性数组,而不仅仅是一个

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

很抱歉,我还是个初学者,但这就是你想要的吗

以您的_形式:

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

它的工作:

<?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')
                     )
     ); 
?>

啊,现在我明白你需要什么了…对不起。我研究并回答你。对不起,但是CHtml::dropDownList()无法做到这一点。在我编辑的答案中显示替代方案。哦,好吧,感觉它会满足我的需要,无论如何,谢谢@Dabiel。你看到我下面的建议了吗?!我认为这是N0nh4x0r的正确答案ツ 应该接受。也许他不完全理解。也许以下方法完成了你的答案并改进了它以更好地理解:这可能是旧答案,但此方法将用值和标签填充下拉列表中的选项,而不是被询问的内容
  <?php echo $form->dropDownListRow($model, 'status',array(0=>"Inactive",1=>"Active")
    ); ?>
<?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);
    }