我在yii中使用$ model-> validate()..所有验证都已通过,但$ model-> save()不起作用。我该怎么做才能解决这个问题?提前谢谢。
这是我的控制器:
$model = new BaseSysRegistration();
$model->attributes = $_POST['BaseSysRegistration'];
$model->of_passport_number = $_POST['of_passport_number'];
$model->password2 = $_POST['BaseSysRegistration']['password'];
$model->email_addr = $_POST['BaseSysRegistration']['email_addr'];
$model->security_question_1_id = $_POST['BaseSysRegistration']['security_question_1_id'];
$model->security_question_1_answer = $_POST['BaseSysRegistration']['security_question_1_answer'];
if($model->validate()){
$model->save();
}
答案 0 :(得分:2)
如果验证通过,则您无需再次验证数据,因此您可以指示save
方法再次validate
数据
if($model->validate()){
$model->save(false);//see the false
}
答案 1 :(得分:0)
您可以使用print_r
方法上的getErrors()
来检查未保存模型的原因。
if ($model->validate()) {
if (!$model->save()) {
print_r($model->getErrors());
}
}
这应该可以帮助您解决问题。
答案 2 :(得分:0)
如果你改变了beforeValidate()中的一个模型属性,那么你应该把它恢复到以前的状态,尝试使用临时属性并将未更改的(原始)属性存储到该属性中,然后在afterValidate中获取它( ),这样你仍然有原始值。
或者像其他人说的那样,只是不要在保存中验证
$model->save(false); //false : don't validate
答案 3 :(得分:0)
要执行$model->save()
,您应该根据需要设置模态数据,您可以通过$ model-> validate()验证数据,然后尝试保存
if ($model->validate()) {
if (!$model->save()) {
print_r($model->getErrors());
}
}