Последовательность в yii?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
wokster
Сообщения: 308
Зарегистрирован: 2013.09.06, 14:12
Контактная информация:

Последовательность в yii?

Сообщение wokster »

Скажите на каком этапе происходит валидация
экшен -> beforesave - > валидация -> save
или
экшен -> валидация - > beforesave-> save

и второй вопрос
если при валидации произошла ошибка, экшен (например update стандартный) еще раз запускается или рендер идет уже из логики валидатора?
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Последовательность в yii?

Сообщение HQ0 »

action с моделью никак не _связан_.

beforeValidate -> validate -> afterValidate -> beforeSave -> save -> afterSave

Если где-то модель _застопорилась_ (не прошла валидацию) action не перезапустится, но продолжит работать дальше.
Аватара пользователя
wokster
Сообщения: 308
Зарегистрирован: 2013.09.06, 14:12
Контактная информация:

Re: Последовательность в yii?

Сообщение wokster »

Сам опытным путем установил, может какому-то чайнику типа меня пригодится:

Код: Выделить всё

public function actionUpdate($id)
    {
        $model=$this->loadModel($id);
        if(isset($_POST['Model']))
        {
            $model->attributes=$_POST['Model'];

            if($model->save())
// тут вначале валидация, потом если прошла валидация, beforesave, потом сохранение в базу
// если не прошла валидация - > запускается еще раз контролер, но добавляются сообщения об ошибках в модель 
{ 
                $this->redirect(array('view','id'=>$model->id));
            }

        }
        $this->render('update',array(
            'model'=>$model
        ));
    }
Покрайней мере я так понял, если есть профи - поправьте
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Последовательность в yii?

Сообщение HQ0 »

Ни контроллер, ни экшн не запускается еще раз из-за валидации модели. Если есть ошибки — модель наполняется данными об этих ошибках и снова рендерится вьюшка.
Ответить