在yii中$ model-> validate()之后插入失败的数据

时间:2013-10-08 10:04:28

标签: php yii

我在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();
}

4 个答案:

答案 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());   
    } 
}