2013-10-08 2 views
0

Я использую $ model-> validate() в yii .. все проверки прошли, но $ 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

У вас есть какие-либо ошибки? – user2092317

ответ

2

Если проверка проходит, то вам не нужно снова проверить данные, так что вы можете указать на метод save не validate данные снова

if($model->validate()){ 
    $model->save(false);//see the false 
} 
0

Вы можете проверить, почему модель не сохраняется с помощью print_r по методу getErrors().

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

Это поможет вам решить эту проблему.

0

Если вы изменили свои свойства моделей в beforeValidate(), то вы должны повернуть его обратно в свое предыдущее состояние, попробовать иметь временное свойство и сохранить в нем неизмененное (исходное) свойство, а затем захватить его в afterValidate(), таким образом, вы все еще имеете исходное значение.

или, как и другие ребята сказали, просто не проверяют в экономии

$model->save(false); //false : don't validate 
0

Для выполнения $model->save() вы должны установить модальные данные при необходимости вы можете проверить данные по $ модели-> проверить(), а затем попытайтесь сэкономить

if ($model->validate()) { 
    if (!$model->save()) { 
     print_r($model->getErrors()); 
    } 
} 
Смежные вопросы