@skajtersen

Как избежать моментального сохранения модели при ajax валидации?

Хочу добавить Ajax валидацию для проверки формы перед апдейтом. В представлении повесил на нужное поле
['enableAjaxValidation' => true]
В контроллере в actionUpdate есть вот такое место

if (Yii::$app->request->isAjax && $modelForm->load(Yii::$app->request->post())) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            if ($modelForm->validate()) {
                $model->setAttributes($modelForm->getAttributes());
               
                if ($model->save()) {
                    return $this->redirect([тут путь назад]);
                }

                if ($model->hasErrors()) {
                    return ActiveForm::validate($model);
                } else {
                    return ['success' => 1, 'html' =>
                        $this->renderPartial('view', [тут передаю, что нужно];
                }
            } else {
                return ActiveForm::validate($modelForm);
            }
        }


Проблема в том, что выбор любого значения в поле, на котором стоит 'enableAjaxValidation' => true, сразу ведет к сохранению модели (даже без нажатия кнопки save). Как этого избежать?
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
Самым правильным решением будет вынос валидации в отдельный экшен контроллера
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Или как сказал Максим Федоров вынести в отдельный экшен или в контролере развести логику, через:
if(Yii::$app->request->isAjax){
//тут валидация
}else{
//тут сохранение
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы