Есть некая функция-хук в разрабатываемом (под)модуле myform_action($obj) вызываемая из другого модуля ("родительского")
От нее ожидается, что либо она вернет URL на который произойдет редирект в дальнейшем, либо произведет это редирект сама (то есть возвращаться в "родительский" модуль необязательно, возможно, наверное, еще вариант что функция сама страницу отристует)
В разрабатываемом модуле необходимо, чтобы эта функция так или иначе генерировала POST форму с полями зависящими от $obj (он довольно большой и через GET запрос не вариант), функция myform_form($obj) есть, генерирует обычный массив $form со всеми нужными полями, отрендерить саму форму через drupal_get_form не проблема, обработать ввод пользователя тоже, проблема как ее вывести в браузер.
Прикинул несколько вариантов решения:
1. Забыть что мы в Drupal'e. Вывести форму напрямую в браузер, но теряем темы, меню и т. п., в общем все прелести Друпала
2. Сделать в callback пункте меню вызов myform_form() через drupal_get_form('myform_form'), но уже без параметра $obj, его передавать через обычный $_SESSION[] (но мало ли что Drupal со стандартными сессиями делает, да и большой объект неохота там хранить)
3. То же самое, что 2 почти, но вызывать callback через curl POST запросом и уже создавать нормальную форму для вывода в браузер.
4. Создать тип материала myform формы (или простую страницу), динамически создавать материал, запихивать туда html полученный drupal_get_form, делать на него редирект, потом материал удалять (если получится то прямо в конце его вывода, нет - так хоть по крону)..
Может есть какой-то другой способ решения? Например отрендерить страницу со всеми блоками, регионами и т.п с формой в контенте напрямую в хуке (вариант 1, но со всеми прелестями друпала) или создать для формы какой-то временный url, на который можно сделать редирект, а после отработки он удаляется (то есть вариант 4 в принципе), ну или как-то просто передать $obj через redirect на callback меню (варианты 2-3, но друпаловскими средствами)?
Подскажите, как лучше, пожалуйста, а то от http://api.drupal.org/api/file/includes/form.inc/5 в переводе гугла и промта я скоро по русски перестану понимать
Комментарии
Видимо никто не сталкивался буду пока с сессиями делать, может позже что в голову придет или наткнусь где на нужную функцию
А почему не передать аргументы с помощью '#callback_arguments' =>$obj?
Достаточно вызвать стандартно drupal_get_form('имя формы', параметр 1, параметр 2)
Соответственно ядро само разберется - когда эта форма отрисовывается, когда сабмитится.
не туда О_о