Yii dropDownList default value


Yii dropDownList default value

我有这个代码:

echo $form->dropDownList($model, 
                 'defaultPrinterId', 
                  CHtml::listData(Printer::model()->findAll(), 'id', 'name'), 
                  array('prompt' => '-- None--')); 

这给了我一个这样的下拉列表:

<select id="LabelType_defaultPrinterId" name="LabelType[defaultPrinterId]">
    <option value="">-- None --</option>
</select>

但是,当表单发布时,它会向我的表添加一个值,其中默认打印机 ID 为 0。 取而代之的是,我如何使其为空,因为它是一个可为空的字段?

如果你想严格遵循MVC,那么与模型相关的值的验证应该在模型中完成。

它可以像这样完成:

/**
 * @return array validation rules for model attributes.
 */
public function rules() {
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        //rules rules rules...
        array('defaultPrinterId', 'default', 'setOnEmpty' => true, 'value' => NULL),
        //rest of the rules
    );
}

在控制器中,从$_POST加载属性后,执行

$model->defaultPrinterId = $model->defaultPrinterId ? $model->defaultPrinterId : null;

这会0更改为null否则保持不修改。