В моем модуле Drupal 7 у меня есть форма и обработчики проверки. Я вызываю свою форму из field.tpl.php с помощью print render(drupal_get_form('my_form'))
; это работает как ожидалось.
Проблема в случае неправильного входного значения.
Перед отображением сообщения об ошибке требуется два неверных представления: во-первых, красная рамка обведена неправильным вводом, а во-вторых, отображается сообщение об ошибке (с красной рамкой).
Итак, как правильно использовать form_set_error()
?
drupal_set_error()
функции. Вы уверены, что не имели в видуform_set_error()
?Ответы:
Создатели форм не должны вызываться внутри файла шаблона, так как они вызываются слишком поздно. Когда вы звоните
render(drupal_get_form('my_form'))
, код, который отображает сообщения об ошибках, был выполнен, и возможные сообщения об ошибках, сообщенные обработчиком проверки, сохраняются в текущем сеансе из функции drupal_set_message () , из которой вызываетсяform_set_error()
.Код для вывода сообщения об ошибке находится в файле page.tpl.php .
Код,
drupal_set_message()
который сохраняет сообщения для показа, следующий:источник
form_set_error()
в файле шаблона является неправильным способом. Итак, каков правильный путь?drupal_get_form()
должен вызываться не внутри файла шаблона, а внутри модуля.Вы должны смотреть на form_set_error вместо
если у вас есть такой элемент:
в функции обратного вызова проверки сделайте это, если вы обнаружите, что значения в
$form_state['values']
недопустимыисточник
form_set_error()
должен вызываться внутри вашейhook_validate()
функции в ответ на LSU_JBob.источник
hook_validate()
.