Событие от клиентской валидации в Yii2

272
20 января 2018, 01:49

Есть форма.

ActiveForm::begin([
    'action' => ['myAction'],
    'enableAjaxValidation' => true,
    'enableClientValidation' => true,
]);

Сделал отправку при submit`е через ajax.

$.ajax({
    url: form.attr('action'),
    data: form.serialize(),
    method: form.attr('method')
}).done(function(data) {
    if (data == "success") {
        //все ок, обрабатываем
    } else {
        //перебираем все ошибки и показываем их в форме
        $.each(data, function(key, val) {
            $("#"+key).after("<div class=\"help-block\">"+val+"</div>");   
            $("#"+key).closest(".form-group").addClass("has-error");
        });
    }
});

Но клиентская валидация тоже пишет в форму сообщение об ошибке. И получается вот так:

В моем случае клиентская валидацию проходит после моего запроса и проверить на наличие ошибки от клиента не получается.

Хотелось бы сначала смотреть на клиента, если ошибки нет, то слать запрос.

Как это сделать? Как отловить событие клиентской валидации? Или может как-то можно запустить ее вручную?

Answer 1

Разобрался! Делается это так:

ActiveForm::begin([
    'action' => ['myAction'],
    'enableAjaxValidation' => true,
    'enableClientValidation' => true,
    'validateOnSubmit' => true,
]);

Надо было добавить 'validateOnSubmit' => true

Answer 2

Если у Вас стоит параметр 'enableClientValidation' => true, то Вам незачем делать свои проверки так как в Yii2 есть собственный валидатор, а правила для него пишутся в моделе, если Вам нужно больше гибкости то читайте про ActiveField и такие валидаторы как when и whenClient. И вот ещё есть интересная вещь.

READ ALSO
Как узнать из какой строки и какого файла был вызван метод класса?

Как узнать из какой строки и какого файла был вызван метод класса?

Если вообще не хочется попу отрывать от стула, то

370
Запись не добавляется в базу MYSQL phpmyadmin xampp

Запись не добавляется в базу MYSQL phpmyadmin xampp

Не добавляется записи из формы в базу данных в mysql XAMPPОтправляется код без ошибки но phpmyadmin записей не показывает

250
Вылезает php код при переходе в localhost/phpmyadmin

Вылезает php код при переходе в localhost/phpmyadmin

Пробовал много чего и sudo apt-get install php-mbstring из другого ответа,но ничего хорошего из этого не вышло

237
Получение данных из mysql через php

Получение данных из mysql через php

ЗдравствуйтеИмеется mysql таблица с 4 строками, у каждой по 4 поля

235