Как программно удалить ошибку валидации установленную с помощью 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']));
    }
}

Написанное актуально для
Drupal 6.x
Теги:
работа с формами
Добавлено: 27 Июля 2018 08:16:20 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...