В чем разница между drupal_get_form()
и drupal_retrieve_form()
? Может кто-нибудь объяснить разницу? Я смотрю на API, но описание похоже на меня.
10
В чем разница между drupal_get_form()
и drupal_retrieve_form()
? Может кто-нибудь объяснить разницу? Я смотрю на API, но описание похоже на меня.
drupal_retrieve_form()
ваш код получает доступ к обновленным, так$form_state
как он передается по ссылке, ноdrupal_get_form()
просто возвращает состояние$form
, а не состояние.Ответы:
Разница заключается в том, что
drupal_get_form()
обрабатывает извлечение, обработку и отображение формы HTML для модулей автоматически, в то время какdrupal_retrieve_form()
возвращает структурированный массив, который определяет форму.Получение формы
drupal_get_form()
сначала проверяет, присутствует ли форма в кеше формы с помощью form_get_cache () ; если его нет, он вызывает drupal_retrieve_form () и drupal_prepare_form () .Обработка формы
drupal_get_form()
вызывает drupal_process_form () , которая является функцией, которая вызывает drupal_validate_form () и которая вызывает обработчики отправки с помощью form_execute_handlers () .Визуализация формы
Рендеринг сделан из
drupal_process_form()
, который вызывает form_builder () .В большинстве случаев
drupal_get_form()
это функция для использования, например, в следующем коде.Единственный модуль, который я нашел, который вызывает
drupal_retrieve_form()
напрямую, это модуль Mollom в mollom_moderate () , который использует его для автоматической отправки формы. Код может использовать drupal_form_submit () , но (как говорится в комментарии): «Программные представления формы не могут автоматически использовать кнопку / действие первичной отправки формы, поэтому нам нужно напоминатьdrupal_form_submit()
».источник