В Drupal 7 есть способ вытолкнуть ошибки формы из стека отображения и / или предотвратить их отображение? - PullRequest
1 голос
/ 02 декабря 2011

У меня есть форма Drupal 7, которую я разрешаю пользователю отправлять через AJAX. Если пользователь не заполняет обязательные поля или вводит неверную информацию, я могу вернуть это и предупредить пользователя с помощью функции form_get_errors(). Проблема в том, что эти значения все еще находятся в «стеке отображения» (я уверен, что это не правильный термин) - когда пользователь обновляет страницу или переходит на другую, отображаются предыдущие ошибки.

Можно ли настроить эти ошибки так, чтобы они не отображались после того, как я получил их с помощью form_get_errors()?

РЕДАКТИРОВАТЬ: Один из вариантов, который у меня есть, - удалить все функции проверки, затем вручную выполнить проверку в моем обработчике отправки ajax ... но я чувствую, что это противоречит цели этого API формы. Я хотел бы использовать все встроенное, но я просто хочу, чтобы сообщения об ошибках не отображались.

1 Ответ

1 голос
/ 02 декабря 2011

Быстрый взгляд на функцию form_set_error() (которая вызывается form_get_errors()) показывает, что она использует шаблон статического кэша Drupal 7 для хранения сообщений об ошибках.Вы сможете очистить этот кеш, вызвав в своей функции проверки AJAX следующее:

drupal_static_reset('form_set_error');

Если вы используете AJAX, предоставляемый API формы (т. Е. Устанавливаете #ajax в своем элементе формы)Возможно, вы захотите взглянуть на #limit_validation_errors(), чтобы узнать, может ли это помочь и вам.

...