Drupal → Несколько одинаковых форм на одной странице
Пример вывода нескольких одинаковых форм на одной странице:
/** * 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.
Комментарии
В D6 было примерно так же :) http://graker.ru/news/2009/09/19/sozdanie_neskolkikh_odinakovykh_form_na... Сколько лет прошло, ужас!
Оставить комментарий