Drupal → Несколько одинаковых форм на одной странице

26.07.2016

Пример вывода нескольких одинаковых форм на одной странице:

/**
 * Implements hook_menu().
 */
function modulename_menu() {
  $items = array();

  $items['forms'] = array(
    'title' => 'Forms',
    'page callback' => 'modulename_multiple_forms',
    'access callback' => TRUE,
  );

  return $items;
}

/**
 * Page callback.
 */
function modulename_multiple_forms() {
  $build = array();

  for ($i = 0; $i < 3; $i++) {
    $build[] = drupal_get_form('modulename_test_form_' . $i, $i);
  }

  return $build;
}

/**
 * Implements hook_forms().
 */
function modulename_forms($form_id, $args) {
  $forms = array();

  if (strpos($form_id, 'modulename_test_form_') === 0) {
    $forms[$form_id] = array(
      'callback' => 'modulename_test_form',
    );
  }

  return $forms;
}

/**
 * Form builder.
 */
function modulename_test_form($form, &$form_state, $i) {
  ...
}

/**
 * Form submit callback.
 */
function modulename_test_form_submit($form, &$form_state) {
  ...
}

Основное здесь это реализация хука hook_forms(), с помощью которого мапятся формы с разными form_id на один form builder.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Добавить комментарий