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

メソッドで使用print_rして、モデルが保存されていない理由を確認できます。getErrors()

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

それは問題を解決するのに役立つはずです。

于 2013-10-08T10:21:18.007 に答える
0

beforeValidate() でモデル プロパティの 1 つを変更した場合は、それを以前の状態に戻し、一時的なプロパティを作成して、変更されていない (元の) プロパティをそこに格納してから、 afterValidate() でそれを取得する必要があります。元の値を保持する方法。

または他の人が言ったように、保存時に検証しないでください

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