Валидация отправленной ajax формы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
OliverStone
Сообщения: 2
Зарегистрирован: 2021.04.07, 17:58

Валидация отправленной ajax формы

Сообщение OliverStone »

Всем привет. Только начал изучать yii2 и столкнулся с такой проблемой: отправляю форму с помощью ajax, но она не проходит валидацию если я в js в data указываю несколько параметров
data: {name: name, form: form} (появляется ошибка что все поля не заполнены), если указываю просто data: form, то все валидируется отлично. Не подскажите как можно исправить проблему? Заранее спасибо за помощь.
С помощью такой js скрипта отправляю форму

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

$('button.reaction').off('click').on('click', function (e) {
    e.preventDefault();
    var name = $(this).data('name');
    var form = $('#' + name).serialize();
    $.ajax({
        url: '',
        type: 'POST',
        data: {name: name, form: form},
        success: function (data) {
            console.log(data);
        },
 
    });
    return false;
});
Таким образом в контроллере обрабатываю форму

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

 if (Yii::$app->request->isAjax) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            
            if($repeat_value->load(\Yii::$app->request->post('form')) && $repeat_value->validate()) {
                return 'Форма принята';
            } else {
                Yii::$app->response->format = Response::FORMAT_JSON;
                return  \yii\widgets\ActiveForm::validate($repeat_value);
            }
        }
Аватара пользователя
porcelanosa
Сообщения: 570
Зарегистрирован: 2010.03.16, 04:31
Откуда: Москва

Re: Валидация отправленной ajax формы

Сообщение porcelanosa »

А что приходит в \Yii::$app->request->post('form') ?
Все правильно - обрабатывается присланная форма - т.е. в JS - это объект типа FormData
когда вы серилизуете форму - он и создается на основе вашей формы.

А когда вы посылаете еще какие- то поля - или даже просто пишите

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

data: {form: form}
стандартный обработчик Yii не понимает что ему прислали.
поля в FormData можно добавить с помощью метода FormData.append
mcintosh-club.ru - первый мой сайт с использование Yii //
Акустика Sonus Faber Hi-End класса//
Необрезная доска и другие пиломатериалы
OliverStone
Сообщения: 2
Зарегистрирован: 2021.04.07, 17:58

Re: Валидация отправленной ajax формы

Сообщение OliverStone »

porcelanosa писал(а): 2021.04.08, 15:27 А что приходит в \Yii::$app->request->post('form') ?

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

В Yii::$app->request->post('form') сериализованная форма 
"csrf=BUWMl3kr3DZ1cseZxz2HKmC8pw1i-xJzqDNnVE0c06ZRM7-jNBvxDgACiMuyV8AcP4XzaAPDJBHhWQAnKSSh1Q%3D%3D&RepeatValue%5Bdata%5D=2&RepeatValue%5Bcount%5D=2&t"
porcelanosa писал(а): 2021.04.08, 15:27стандартный обработчик Yii не понимает что ему прислали.
поля в FormData можно добавить с помощью метода FormData.append
Спасибо. Проблема решена добавление значений к переменной form
Ответить