Правило валидации:
...
[['field1', 'field2'], 'validateFields', 'skipOnEmpty' => false, 'skipOnError' => false],
...
Функция валидации:
public function validateFields($attribute, $params)
{
// делаю очистку ошибок обоих полей (это не работает)
$this->clearErrors('field1');
$this->clearErrors('field2');
// проверяю
if (empty($this->field1) && empty($this->field2)) {
// в первый input помещаю пустую ошибку (поля идут вертикальным списком)
$this->addError('field1', '');
// во второй инпут помещаю саму ошибку
$this->addError('field2', 'At least one must not be blank.');
return false;
}
return true;
}
У самой формы ActiveForm:
...
'enableAjaxValidation' => true,
'enableClientValidation' => false,
...
Суть проблемы. Поля пустые. Передаем фокус первому полю, затем второму, убираем фокус со второго - отрабатывает ajax-валидация, оба поля (по очереди) отмечены как has-error и появляется сообщение об ошибке. Передаем фокус первому полю, вводим данные, убираем фокус с поля, а ошибка продолжает висеть на втором поле. Как заставить форму "перевалидировать" одно поле при изменении значения другого поля?