Używam, drupal_get_form('event_signup_form')
aby osadzić swój niestandardowy formularz w bloku. Formularz jest renderowany zgodnie z przeznaczeniem, ale przesłanie go nie uruchamia niczego.
Wywoływana jest sama funkcja formularza event_signup_form($form, &$form_state)
i wywoływana jest funkcja wysyłania, event_signup_form_submit($form, &$form_state)
ale nie jest ona wywoływana.
Korzystam z hook_block_view, aby wyświetlić formularz:
function event_block_view($delta = '') {
$blocks = array();
if ($delta ...) {
$blocks['content'] = drupal_render(drupal_get_form('event_signup_form'));
}
}
Udało mi się to uruchomić - oto jak (stub):
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()
. Prawidłowa odpowiedź znajduje się w odpowiedzi Francisco Luz.Założę się, że
$form['#submit'][] = 'event_signup_form_submit';
to jest sprawca. Ustawiasz to tylko, jeśli chcesz mieć dodatkową procedurę obsługi przesyłania.To jest działający przykładowy kod.
źródło