Я использую, drupal_get_form('event_signup_form')
чтобы встроить мою пользовательскую форму в блок. Форма отображается в соответствии с назначением, но отправка формы ничего не вызывает.
Вызывается сама функция формы и вызывается event_signup_form($form, &$form_state)
функция submit, event_signup_form_submit($form, &$form_state)
но она не вызывается .
Я использую hook_block_view, чтобы показать форму:
function event_block_view($delta = '') {
$blocks = array();
if ($delta ...) {
$blocks['content'] = drupal_render(drupal_get_form('event_signup_form'));
}
}
Мне удалось заставить это работать - вот как (заглушка):
function hook_block_view($delta = '') {
$blocks['content'] = drupal_render(drupal_get_form('event_signup_form'));
}
function event_signup_form() {
// Register form submit handler, same goes for validation handler
$form['#submit'][] = 'event_signup_form_submit';
return $form;
}
function event_signup_form_submit($form, &$form_state) {
// This is now triggered
}
hook_form()
. Смотрите ответ Франциско Луз для правильного ответа.Держу пари, что
$form['#submit'][] = 'event_signup_form_submit';
это виновник. Вы устанавливаете это, только если вы хотите дополнительный обработчик представления.Это рабочий пример кода.
источник