2017-10-10 11 views
0

J'ai un gestionnaire de soumission personnalisé, mais il doit être exécuté après que le gestionnaire par défaut a mis à jour la base de données car mon gestionnaire personnalisé doit récupérer les données mises à jour depuis la base de données. Comment puis-je dire à Drupal d'attendre la fin du gestionnaire par défaut? Je ne suis pas sûr non plus s'il exécute le gestionnaire personnalisé en premier ou par défaut. Mais j'ai essayé array_shift() pour m'assurer que le gestionnaire personnalisé s'exécute en dernier. Est-ce qu'il exécute les gestionnaires de manière synchrone?Drupal attend le gestionnaire de soumission par défaut pour mettre à jour la base de données

Dans ma forme alter, j'ai ce code qui enregistre mon gestionnaire personnalisé:

$form['#submit'][] = 'my_custom_handler'; 

Quand je soumets la forme, je veux que ma base de données mise à jour (avec les valeurs sous la forme) avant d'exécuter my_custom_handler(), car mon gestionnaire personnalisé doit extraire des données de la base de données et il doit être mis à jour.

Merci!

+0

juste une suggestion, vous pouvez créer un élément de menu et rediriger vers l'élément de menu après l'envoi du formulaire, De cette façon, vous pouvez appeler my_custom_handler dans le nouvel élément de menu. –

Répondre

0

$form['#submit'] est un tableau de gestionnaires de soumission et il s'exécute du premier au dernier. Et si vous ajoutez simplement un gestionnaire de soumission comme vous l'avez mentionné, il devrait s'exécuter après celui par défaut. Vous n'avez besoin de array_shift() que si vous voulez que votre gestionnaire s'exécute avant celui par défaut. Donc, d'après ce que je vois ici, vous ajoutez bien le gestionnaire. Peut-être que le problème est ailleurs?