Gérer plusieurs boutons de soumission de formulaire Drupal API
J'ai 2 boutons submit, et souhaitez effectuer des actions différentes pour chaque bouton soumettre . Ici je veux mettre les champs du formulaire qui peut être fait seulement dans form_alter(). Quelqu'un peut-il suggérer comment vérifier plusieurs boutons de soumission dans le form_alter() la fonction?
J'ai utilisé
function myform_form_submit($formID, &$form_state) {
if($form_state['clicked_button']['#value'] == $form_state['values']['submit_one']) //if button 1 is clicked
$form_state['redirect'] = 'mypath/page_one'; //redirect to whatever page you want
else if($form_state['clicked_button']['#value'] == $form_state['values']['submit_two']) /if button 2 is clicked
$form_state['redirect'] = 'mypath/page_two';
}
mais cela ne fonctionne pas
- Avez-vous un envoyer crochet dans votre formulaire? $form['#submit'][] = 'myform_form_submit'; ?
- oui, mais ce n'est pas drupal censé ramasser la fonction envoyer, même sans le au-dessus du crochet?
Vous devez vous connecter pour publier un commentaire.
La meilleure chose à faire si vous avez deux boutons submit d'un formulaire et que vous voulez leur faire des choses différentes, est de créer une autre fonction envoyer pour chaque bouton, et connecter. Une des belles choses au sujet de la FormAPI est qu'il relie automatiquement le formulaire avec le gestionnaire de soumission pour vous, mais si vous avez deux boutons submit, vous voulez aller quelque part nouvelle.
Donc votre code de formulaire est susceptible de contenir:
Mais je ne sais pas ce que tu veux dire par form_alter() - il n'y a pas de raison d'utiliser un formulaire de modifier de toute sorte.
Edit: Comme est venu dans les commentaires - si vous avez besoin de différentes fonctions de validation pour les deux boutons, vous pouvez également inclure
'#validate' => array('my module_form_validate_one')
et'#validate' => array('my module_form_validate_two')
dans le bouton respectif des tableaux. Mais il n'est pas nécessaire, et si la norme de validation de formulaire fonctionne bien, puis aller avec qui.Si vous voulez gérer les différentes bouton "soumettre" -cliquez à l'intérieur d'une fonction envoyer, vous pouvez vérifier:
Ou vous pouvez affecter certains biens sont d'abord le bouton, puis vérifier:
Je suis à l'aide de Drupal 7... Espérons que cela aide
YOUR_PROPERTY
ensembleAlors que l'on a accepté la réponse est correcte, il convient de noter que vous devez transmettre des valeurs différentes avec chacun de vos boutons de soumission, ou la fonction envoyer utilisé sera le dernier bouton soumettre défini.
En d'autres termes, si la valeur des deux boutons submit est "Soumettre", alors seulement la deuxième soumettre fonction sera appelée, quel que soit le bouton est pressé.