Бывает нужно избавиться от ошибки валидации, которая проходила в другом модуле. Код ниже, удаляет ошибку валидации поля 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
Добавить комментарий