J'utilise drupal_get_form('event_signup_form')
pour intégrer mon formulaire personnalisé dans un bloc. Le formulaire est rendu comme prévu, mais l'envoi du formulaire ne déclenche rien.
La fonction de formulaire elle-même est appelée event_signup_form($form, &$form_state)
et la fonction de soumission est appelée event_signup_form_submit($form, &$form_state)
mais elle n'est pas appelée.
J'utilise hook_block_view pour afficher le formulaire:
function event_block_view($delta = '') {
$blocks = array();
if ($delta ...) {
$blocks['content'] = drupal_render(drupal_get_form('event_signup_form'));
}
}
J'ai réussi à faire fonctionner cela - voici comment (talon):
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()
. Voir la réponse de Francisco Luz pour la bonne réponse.Je parie que
$form['#submit'][] = 'event_signup_form_submit';
c'est le coupable. Vous ne définissez cela que si vous voulez un gestionnaire de soumission supplémentaire.Il s'agit d'un exemple de code fonctionnel.
la source