我有这个代码:
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
否则保持不修改。