Не сохраняет поля модели Yii

Posted: 12 сентября 2012


Наткнулся на траблу с сохранением с использованием AR в Yii

        public function actionProfile(){
            $user = User::model()->findByPk(Yii::app()->user->id);
            if($user === null) throw new CHttpException(403, 'access denied');
            
            if(isset($_POST['ajax']) && $_POST['ajax']==='user-form'){
               echo CActiveForm::validate($user);
               Yii::app()->end();
            }
            if(isset($_POST['User'])){
                    $user->attributes = $_POST['User'];
                    if($user->save()){
                        Yii::app()->user->setFlash('success', "Профиль обновлен");
                    }
            }
            
            $this->render('profile',array(
                'user' => $user
                )
            );
        }

Выглядит все это бодрячком, метод save() работает, ставится флеш. Но поля не обновляются, хоть убей.

Решение-костыль работало, но захотелось узнать что же я делаю не так

foreach($_POST['User'] as $name=>$value){
   $user->$name=$value;
}

Начал копать, пытаясь понять что же происходит этакое

$user->attributes = $_POST['User'];
                    var_dump($_POST['User']);
                    var_dump($user->attributes);

По ходу раскопок оказалось что модель CActiveRecord не полная - тоесть поля в базу добавлялись, а модель не перегенерировалась gii. Валидацию эта штука проходит, поскольку валидирует лишь те поля что прописаны в модели.


Solution: add new database fields to your AR-model or regenerate it using gii

If you find the post helpful you can share it


Ваше мнение:

Имя
   other with Yii Framework
drcreazy © 2008-2012 all rights reserved