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