Yii dropDownList默认值

时间:2012-06-05 14:38:14

标签: php yii

我有这段代码:

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>

但是,当表单发布时,它会向我的表中添加一个值,其中defaultPrinterId为0.而不是那样,我如何将其设为null,因为它是一个可以为空的字段?

2 个答案:

答案 0 :(得分:8)

如果您想严格遵循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
    );
}

答案 1 :(得分:6)

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

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

这会将0更改为null,否则会将其保留为未修改状态。