Drupal API

drupal_get_form

  • Drupal 5
  • Drupal 6
Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/form.inc, строка 68

Версии
5 – 6
drupal_get_form($form_id)

Получает форму из функции-конструктора или извлекает её из кеша, если форма была сформирована на предыдущей загрузке страницы. Далее функция проводит проверку и обработку данных, и, если необходимо формирует её HTML-код.

Параметры

$form_id - уникальная строка, идентифицирующая форму. Если существует функция с таким же именем, она вызывается для формирования соответствующей формы. Модули, которые генерируют несколько одинаковых ( или очень похожих) форм, используя разные $form_id, могут реализовать функцию hook_forms(), которая связывает разные значения $form_id с соответствующей функцией-конструктором формы. Примеры можно найти в node_forms(), search_forms() и user_forms().

... Все дополнительные аргументы передаются функции-конструктору формы.

Возвращаемое значение

HTML-код формы.

Связанные темы

▸ 49 функции вызывают drupal_get_form()

▾ 49 функции вызывают drupal_get_form()

block_admin_display in modules/block/block.admin.inc
Menu callback for admin/build/block.
book_outline in modules/book/book.pages.inc
Menu callback; show the outline form for a single node.
comment_admin in modules/comment/comment.admin.inc
Коллбэк меню; отображает список комментариев для администрирования.
comment_delete in modules/comment/comment.admin.inc
Коллбек меню; Подтверждение удаления комментария.
comment_form_box in modules/comment/comment.module
Тема формы блока комментария.
comment_render in modules/comment/comment.module
Отображает комментарии.
contact_site_page in modules/contact/contact.pages.inc
Site-wide contact page.
contact_user_page in modules/contact/contact.pages.inc
Страница персональных контактов.
dblog_overview in modules/dblog/dblog.admin.inc
Коллбэк меню; выводит логи сообщений.
example_profile_tasks in ./example.profile
Perform any final installation tasks for this profile.
filter_admin_configure_page in modules/filter/filter.admin.inc
Menu callback; display settings defined by a format's filters.
filter_admin_format_page in modules/filter/filter.admin.inc
Коллбэк меню; Отображает форму форматов фильтра.
filter_admin_order_page in modules/filter/filter.admin.inc
Menu callback; display form for ordering filters for a format.
forum_form_main in modules/forum/forum.admin.inc
install_change_settings in ./install.php
Configure and rewrite settings.php.
install_select_locale in ./install.php
Allow admin to select which locale to use for the current profile.
install_select_profile in ./install.php
Allow admin to select which profile to install.
install_tasks in ./install.php
Tasks performed after the database is initialized.
locale_languages_add_screen in includes/locale.inc
Пользовательский интерфейс языковых дополнений.
locale_translate_delete_page in includes/locale.inc
String deletion confirmation page.
locale_translate_export_screen in includes/locale.inc
Интерфейс пользователя для страницы экпорта перевода
locale_translate_seek_screen in includes/locale.inc
String search screen.
menu_delete_menu_page in modules/menu/menu.admin.inc
Menu callback; check access and get a confirm form for deletion of a custom menu.
menu_item_delete_page in modules/menu/menu.admin.inc
Menu callback; Check access and present a confirm form for deleting a menu link.
node_add in modules/node/node.pages.inc
Выводит форму подтверждения ноды или ряд ссылок на такие формы.
node_page_edit in modules/node/node.pages.inc
Menu callback; presents the node editing form, or redirects to delete confirmation.
openid_redirect in modules/openid/openid.inc
Creates a js auto-submit redirect for (for the 2.x protocol)
openid_user_identities in modules/openid/openid.pages.inc
Menu callback; Manage OpenID identities for the specified user.
path_admin_edit in modules/path/path.admin.inc
Menu callback; handles pages for creating and editing URL aliases.
path_admin_overview in modules/path/path.admin.inc
Return a listing of all defined URL aliases. When filter key passed, perform a standard search on the given key, and return the list of matching URL aliases.
poll_view in modules/poll/poll.module
Реализация hook_view().
search_block in modules/search/search.module
Реализация hook_block().
search_view in modules/search/search.pages.inc
Menu callback; presents the search form and/or search results.
system_actions_manage in modules/system/system.module
Menu callback. Display an overview of available and configured actions.
taxonomy_add_term_page in modules/taxonomy/taxonomy.admin.inc
Menu callback; return the edit form for a new term after setting the title.
taxonomy_admin_term_edit in modules/taxonomy/taxonomy.admin.inc
Страница редактирования термина словаря.
taxonomy_admin_vocabulary_edit in modules/taxonomy/taxonomy.admin.inc
Страница редактирования словаря.
template_preprocess_page in includes/theme.inc
Обрабатывает переменные для page.tpl.php
template_preprocess_poll_results in modules/poll/poll.module
Preprocess the poll_results theme hook.
trigger_assign in modules/trigger/trigger.admin.inc
Build the form that allows users to assign actions to hooks.
update_selection_page in ./update.php
user_admin in modules/user/user.admin.inc
user_admin_access_add in modules/user/user.admin.inc
Menu callback: add an access rule.
user_admin_access_check in modules/user/user.admin.inc
Menu callback: list all access rules
user_admin_access_edit in modules/user/user.admin.inc
Menu callback: edit an access rule.
user_block in modules/user/user.module
Реализация hook_block().
user_edit in modules/user/user.pages.inc
Form builder; Present the form to edit a given user or profile category. See alsouser_edit_validate()
user_external_login in modules/user/user.module
Perform standard Drupal login operations for a user object.
user_page in modules/user/user.pages.inc
Access callback for path /user.

Код

<?php
function drupal_get_form($form_id) {
  $form_state = array('storage' => NULL, 'submitted' => FALSE);
  $args = func_get_args();
  $cacheable = FALSE;
  if (isset($_SESSION['batch_form_state'])) {
    // We've been redirected here after a batch processing : the form has
    // already been processed, so we grab the post-process $form_state value
    // and move on to form display. See _batch_finished() function.
    $form_state = $_SESSION['batch_form_state'];
    unset($_SESSION['batch_form_state']);
  }
  else {
    // If the incoming $_POST contains a form_build_id, we'll check the
    // cache for a copy of the form in question. If it's there, we don't
    // have to rebuild the form to proceed. In addition, if there is stored
    // form_state data from a previous step, we'll retrieve it so it can
    // be passed on to the form processing code.
    if (isset($_POST['form_id']) && $_POST['form_id'] == $form_id && !empty($_POST['form_build_id'])) {
      $form = form_get_cache($_POST['form_build_id'], $form_state);
    }
    // If the previous bit of code didn't result in a populated $form
    // object, we're hitting the form for the first time and we need
    // to build it from scratch.
    if (!isset($form)) {
      $form_state['post'] = $_POST;
      // Use a copy of the function's arguments for manipulation
      $args_temp = $args;
      $args_temp[0] = &$form_state;
      array_unshift($args_temp, $form_id);
      $form = call_user_func_array('drupal_retrieve_form', $args_temp);
      $form_build_id = 'form-'. md5(uniqid(mt_rand(), true));
      $form['#build_id'] = $form_build_id;
      drupal_prepare_form($form_id, $form, $form_state);
      // Store a copy of the unprocessed form for caching and indicate that it
      // is cacheable if #cache will be set.
      $original_form = $form;
      $cacheable = TRUE;
      unset($form_state['post']);
    }
    $form['#post'] = $_POST;
    // Now that we know we have a form, we'll process it (validating,
    // submitting, and handling the results returned by its submission
    // handlers. Submit handlers accumulate data in the form_state by
    // altering the $form_state variable, which is passed into them by
    // reference.
    drupal_process_form($form_id, $form, $form_state);
    if ($cacheable && !empty($form['#cache'])) {
      // Caching is done past drupal_process_form so #process callbacks can
      // set #cache. By not sending the form state, we avoid storing
      // $form_state['storage'].
      form_set_cache($form_build_id, $original_form, NULL);
    }
  }
  // Most simple, single-step forms will be finished by this point --
  // drupal_process_form() usually redirects to another page (or to
  // a 'fresh' copy of the form) once processing is complete. If one
  // of the form's handlers has set $form_state['redirect'] to FALSE,
  // the form will simply be re-rendered with the values still in its
  // fields.
  //
  // If $form_state['storage'] or $form_state['rebuild'] have been
  // set by any submit or validate handlers, however, we know that
  // we're in a complex multi-part process of some sort and the form's
  // workflow is NOT complete. We need to construct a fresh copy of
  // the form, passing in the latest $form_state in addition to any
  // other variables passed into drupal_get_form().

  if (!empty($form_state['rebuild']) || !empty($form_state['storage'])) {
    $form = drupal_rebuild_form($form_id, $form_state, $args);
  }
  // If we haven't redirected to a new location by now, we want to
  // render whatever form array is currently in hand.
  return drupal_render_form($form_id, $form);
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему

Что такое OpenID?
  • Регистрация
  • Забыли пароль?

Документация

  • Drupal 6
  • Константы
  • Файлы
  • Функции
  • Глобальные переменные
  • Разделы