如何在 Yii 框架中选择一个选项

How do I make an option selected in Yii framework

这是下拉菜单:

$cities = array('' => '-- All --');
$cities += CHtml::listData(Cities::model()->findAll(), 'id', 'name');
echo $form->dropDownList($model, 'city', $cities, array('class' => 'edit', 'style' => 'width:auto', 'onchange'=>'$(document).ready(function(){
    $("#pay").trigger("click");});' ) );

我想默认选中 --All-- 选项。我该怎么做?

更新:我这样试过:

echo $form->dropDownList($model, 'city', $cities,  array('options' => array(''=>array('selected'=>true))), array('class' => 'edit', 'style' => 'width:auto', 'onchange'=>'$(document).ready(function(){
    $("#pay").trigger("click");});'));

但没有用。 这是 html 生成的:

<select name="FitnessSubscriber[city]" id="FitnessSubscriber_city">
<option value="" selected="selected">-- All --</option>
<option value="1" selected="selected">Cluj-Napoca</option>
<option value="2">Baia Mare</option>
<option value="3">Iași</option>
<option value="5">Timisoara</option>
<option value="6">Bucuresti</option>
</select>

更新模型: 这是城市模型:

class Cities extends ActiveRecord
{

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }


    public function tableName()
    {
        return 'cities';
    }


    public function rules()
    {

        return array(
            array('name', 'length', 'max'=>45),

            array('id, name', 'safe', 'on'=>'search'),
        );
    }

    public function relations()
    {

        return array(
            'city' => array(self::BELONGS_TO, 'UserLocations', 'city_id'),
            'locations' => array(self::HAS_MANY, 'Locations', 'city_id'),
            'users' => array(self::HAS_MANY, 'Users', 'location_id'),
                        'gyms'=>array(self::HAS_MANY, 'FitnessGym', 'city_id'),
                        'pools'=>array(self::HAS_MANY, 'SwimPool', 'city_id'),

        );
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'name' => 'Name',
        );
    }

    public function search()
    {

        $criteria=new CDbCriteria;

        $criteria->compare('id',$this->id);
        $criteria->compare('name',$this->name,true);

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }
}

尝试在$htmlOptions中使用"prompt"=> "---All---":

echo $form->dropDownList($model, 'city', $cities, array('class' => 'edit', 'style' => 'width:auto', 'onchange'=>'$(document).ready(function(){
$("#pay").trigger("click");});', "prompt"=> "--All--" ) );

同时从数据列表中删除“--All--”(如果您之前已添加)。因为不是真实数据!

这样做..

echo $form->field($model, 'city')->dropDownList(
            ArrayHelper::map(Cities::find()->all(),'city_id', 'city_name'),
            ['prompt' => '--Select City--'],
            ['active' => $model->city], //Here you add the city you want to set selected
    );