Бывает нужно избавиться от ошибки валидации, которая проходила в другом модуле. Код ниже, удаляет ошибку валидации поля 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
Похожие записи
- Показать второй шаг многошаговой формы в модальном окне
- Создание многошаговой формы (multistep form) (8)
- Навесить на элемент managed_file свой ajax callback (Как обновить всю форму при загрузки файла в managed_file)
- Установка невидимой капчи от гугла (Invisible reCaptcha v3)
- Вывести дефолтное значение элемента формы с помощью #lazy_builder
Добавить комментарий