Вы здесь

Как при валидации формы вывести ошибку рядом с полем, которое не прошло валидацию?

0

Есть форма, есть кастомная валидация, сообщение об ошибке выводится в стандартном месте drupal, как переопределить место - чтобы сообщение выводилось рядом с полем?

Желательно решение без модулей.

Версия Drupal: 
7.x
Категория: 
Form API
Вопрос задан 15.08.2016 - 15:24
Аватар пользователя im
im
32

Ответы

1

Можно поизвращаться и в функцию валидации добавить код:

function form_validate(&$form, &$form_state) {

   ................

  // Получаем все ошибки валидации. 
  $form_errors = form_get_errors();
  // Перебираем ошибки для элементов и добавляем для каждого в #suffix разметку с текстом ошибки.
  if (!empty($form_errors)) {
    foreach ($form_errors as $element => $error) {
      $form[$element]['#suffix'] = '<div class="messages error">' . $error . '</div>';
    }
  }
  // Убираем error messages.
  drupal_get_messages('error');
}

Форму ($form) нужно только будет передавать по ссылке в функцию валидации.

Или же воспользоваться модулем https://www.drupal.org/project/ife

Ответ дан 15.08.2016 - 19:52
Аватар пользователя drupby
drupby
456

Спасибо! Хороший вариант

Комментарий оставлен 16.08.2016 - 02:53
0

Элемент формы, не прошедший валидацию, имеет класс error. Можно составить css-правило, типа,

.error::after {
  content: "Сообщение об ошибке";
}

Или при генерации формы после каждого элемента вставить заранее сообщения об ошибке с display: none. А включать его по правилу:

.error + .error-message {
  display: "Здесь то, что нужно";
}
Ответ дан 15.08.2016 - 18:07

не, так не прокатит, сообщения разные, типа здесь маленькое значение или большое, или только цифры итд. Но на прозапас оставлю такой вариант, спасибо!

Комментарий оставлен 15.08.2016 - 18:22