Страница 1 из 1

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

Добавлено: 2014.10.03, 12:41
wokster
Скажите на каком этапе происходит валидация
экшен -> beforesave - > валидация -> save
или
экшен -> валидация - > beforesave-> save

и второй вопрос
если при валидации произошла ошибка, экшен (например update стандартный) еще раз запускается или рендер идет уже из логики валидатора?

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

Добавлено: 2014.10.03, 13:09
HQ0
action с моделью никак не _связан_.

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

Если где-то модель _застопорилась_ (не прошла валидацию) action не перезапустится, но продолжит работать дальше.

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

Добавлено: 2014.10.03, 13:12
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
        ));
    }
Покрайней мере я так понял, если есть профи - поправьте

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

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