Ugh, c'est probablement quelque chose de simple, mais ça me rend fou. J'ai un formulaire simple (juste un bouton soumettre) que j'insère dans un noeud en utilisant hook_nodeapi(). Il est inséré correctement, et la page s'actualise lorsque je l'envoie, mais elle n'atteint jamais la fonction form_submit(). Voici le code:Pourquoi ma fonction de soumission de formulaire drupal n'est-elle pas appelée?
function fantasy_stocks_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
$form = drupal_get_form('fantasy_stocks_buy_me_form', $node);
switch ($op) {
case 'view':
$node->content['body']['#value'] .= $form;
break;
}
}
function fantasy_stocks_buy_me_form(&$form_state, $node) {
$form['submit'] = array(
'#type' => 'submit',
'#title' => t('Buy') . ' ' . $node->title,
'#description' => t('Add') . ' ' . $node->title . ' ' . t('to your stock portfolio.'),
'#value' => t('Buy') . ' ' . $node->title,
'#submit' => TRUE
);
$form['node_added'] = array(
'#type' => 'hidden',
'#value' => $node->nid
);
$form['#submit'][] = 'fantasy_stocks_buy_me_form_submit';
return $form;
}
function fantasy_stocks_buy_me_form_submit($form, &$form_state) {
$message = 'You have submitted the ' . $form_id . ' form which contains the following data:<pre>' . print_r($form_values,true) . '</pre>';
drupal_set_message(t($message));
}
J'ai essayé d'ajouter un écho et mourir() dans la fonction d'envoi, il est certainement pas appelé. J'ai également essayé de quitter la déclaration $ form ['# submit'], car la valeur par défaut devrait en prendre soin, mais en vain. Je sais que je dois manquer quelque chose de stupide. Des idées?
De plus, une chose qui semblait bizarre est que la forme se rend avec la balise suivante:
<form action="/MLMBid/node/5" accept-charset="UTF-8" method="post" id="fantasy-stocks-buy-me-form-1">
Est-ce normal, d'avoir le « -1 » annexée au formulaire id?
Je ne peux pas changer les noms des fonctions, les tirets sont un caractère illégal dans un nom de fonction. Je suppose que drupal convertit les traits de soulignement en tirets quand il rend le formulaire, puis les convertit en retour pour appeler la fonction? Mais oui, le "-1" est bizarre ... Je vais regarder plus en détail pourquoi cela apparaît. – SenorPuerco
Le -1 est là pour s'assurer que l'ID est unique au cas où le même formulaire pourrait être rendu plusieurs fois sur une page. –
assez drôle la réponse a obtenu -1 – B2F