Drupal → Как программно удалить ошибку валидации установленную с помощью form_set_error()
Бывает нужно избавиться от ошибки валидации, которая проходила в другом модуле. Код ниже, удаляет ошибку валидации поля some_field
в форме some_form
:
/** * Реализация hook_form_FORM_ID_alter() */ function mymodule_form_some_form_alter(&$form) { // вешаем на форму свой валидатор. $form['#validate'][] = 'mymodule_some_form_validate'; } /** * Валидация формы some_form */ function mymodule_some_form_validate($form, &$form_state) { $errors = form_set_error(); // получаем список ошибок if (isset($errors['mail'])) { // удаляем сообщение об ошибке unset($_SESSION['messages']['error'][array_search($errors['mail'], $_SESSION['messages']['error'])]); // удаляем саму ошибку unset($errors['mail']); // сбрасываем список ошибок form_set_error(NULL, '', TRUE); // заполняем список по новой foreach ($errors as $key => $value) { form_set_error($key, $value); } // удаляем дубли ошибок, добавленных прошлым шагом $_SESSION['messages']['error'] = array_values(array_unique($_SESSION['messages']['error'])); } }
Оставить комментарий