0

我在 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

4 回答 4

2

如果验证通过,那么您不需要再次验证数据,因此您可以向save方法指示不再validate数据

if($model->validate()){
    $model->save(false);//see the false
}
于 2013-10-08T10:17:06.517 回答
0

如果您在 beforeValidate() 中更改了您的模型属性之一,那么您应该将其转回之前的状态,尝试拥有一个临时属性并将未更改的(原始)属性存储到其中,然后在 afterValidate() 中获取它,这个方式你仍然有原来的价值。

或者像其他人说的那样,只是不要在保存中验证

 $model->save(false); //false : don't validate
于 2013-10-08T10:43:32.573 回答
0

print_r您可以使用on方法检查模型未保存的原因getErrors()

if ($model->validate()) {
    if (!$model->save()) {
        print_r($model->getErrors());   
    } 
}

那应该可以帮助您解决问题。

于 2013-10-08T10:21:18.007 回答
0

要执行$model->save(),您应该根据需要设置模态数据,您可以通过 $model->validate() 验证数据,然后尝试保存

if ($model->validate()) {
    if (!$model->save()) {
        print_r($model->getErrors());   
    } 
}
于 2017-11-22T09:44:54.073 回答