Скажите на каком этапе происходит валидация
экшен -> beforesave - > валидация -> save
или
экшен -> валидация - > beforesave-> save
и второй вопрос
если при валидации произошла ошибка, экшен (например update стандартный) еще раз запускается или рендер идет уже из логики валидатора?
Последовательность в yii?
Последовательность в yii?
Мой видео блог посвященный yii "Yii2 для Блондинок и Чайников: уроки, заметки, гайды"
Re: Последовательность в yii?
action с моделью никак не _связан_.
beforeValidate -> validate -> afterValidate -> beforeSave -> save -> afterSave
Если где-то модель _застопорилась_ (не прошла валидацию) action не перезапустится, но продолжит работать дальше.
beforeValidate -> validate -> afterValidate -> beforeSave -> save -> afterSave
Если где-то модель _застопорилась_ (не прошла валидацию) action не перезапустится, но продолжит работать дальше.
Re: Последовательность в yii?
Сам опытным путем установил, может какому-то чайнику типа меня пригодится:
Покрайней мере я так понял, если есть профи - поправьте
Код: Выделить всё
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
));
}
Мой видео блог посвященный yii "Yii2 для Блондинок и Чайников: уроки, заметки, гайды"
Re: Последовательность в yii?
Ни контроллер, ни экшн не запускается еще раз из-за валидации модели. Если есть ошибки — модель наполняется данными об этих ошибках и снова рендерится вьюшка.