Есть форма.
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");
});
}
});
Но клиентская валидация тоже пишет в форму сообщение об ошибке. И получается вот так:
В моем случае клиентская валидацию проходит после моего запроса и проверить на наличие ошибки от клиента не получается.
Хотелось бы сначала смотреть на клиента, если ошибки нет, то слать запрос.
Как это сделать? Как отловить событие клиентской валидации? Или может как-то можно запустить ее вручную?
Разобрался! Делается это так:
ActiveForm::begin([
'action' => ['myAction'],
'enableAjaxValidation' => true,
'enableClientValidation' => true,
'validateOnSubmit' => true,
]);
Надо было добавить 'validateOnSubmit' => true
Если у Вас стоит параметр 'enableClientValidation' => true, то Вам незачем делать свои проверки так как в Yii2 есть собственный валидатор, а правила для него пишутся в моделе, если Вам нужно больше гибкости то читайте про ActiveField и такие валидаторы как when и whenClient. И вот ещё есть интересная вещь.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости