Estou usando drupal_get_form('event_signup_form')
para incorporar meu formulário personalizado dentro de um bloco. O formulário está sendo renderizado conforme pretendido, mas o envio do formulário não dispara nada.
A própria função de formulário é chamada event_signup_form($form, &$form_state)
e a função de envio é chamada, event_signup_form_submit($form, &$form_state)
mas não está sendo chamada.
Estou usando hook_block_view para mostrar o formulário:
function event_block_view($delta = '') {
$blocks = array();
if ($delta ...) {
$blocks['content'] = drupal_render(drupal_get_form('event_signup_form'));
}
}
Eu consegui fazer isso funcionar - aqui está como (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()
. Veja a resposta de Francisco Luz para obter a resposta correta.Minha aposta é que
$form['#submit'][] = 'event_signup_form_submit';
é o culpado. Você define isso apenas se desejar um manipulador de envio extra.Este é um código de exemplo funcional.
fonte