J'ai mis à jour l'un de mes modules Drupal 7 en 8 et j'ai un problème avec mon formulaire. J'ajoute une fonction de validation et un gestionnaire de soumission. La fonction de validation est appelée très bien, mais la fonction de soumission ne se déclenche pas. Je me demande si cela signifie qu'il existe une approche de style Symfony qui doit être adoptée pour ajouter des gestionnaires de soumission aux formulaires existants. J'ai fait beaucoup de recherches et je ne trouve aucun exemple. J'ai également examiné certains modules D8 en cours de réalisation, mais je n'y ai pas vraiment trouvé d'exemples de travail.
Quelqu'un at-il une idée de la bonne façon de faire Drupal 8?
Réponses:
Selon l'exemple de la documentation, c'est la même chose que pour Drupal 7:
Vous pouvez trouver une logique (de travail) similaire dans
contact_form_user_form_alter()
editor_form_filter_format_form_alter()
locale_form_language_admin_edit_form_alter()
Et quelques autres d'ailleurs.
la source
Vous pouvez ajouter le nombre de gestionnaires d'envoi souhaité à l'aide du code suivant:
Si vous souhaitez ajouter un gestionnaire de soumission après le gestionnaire de soumission par défaut (un gestionnaire de soumission qui sera appelé après le rappel de soumission), vous pouvez utiliser ce qui suit.
Pour supprimer le gestionnaire de soumission:
la source
Le comportement est soit modifié, soit différent d'un cas à l'autre. Avec le formulaire de confirmation Node Delete Multiple
Le code de @ Clive fait que Drupal ignore le gestionnaire principal. Dans ce cas, ajoutez le gestionnaire au
$form['#submit']
section:la source
Voici comment attacher un gestionnaire de soumission personnalisé au formulaire d'ajout / modification de nœud d'article dans Drupal 8:
Je n'ai pas réussi à ajouter un gestionnaire de soumission personnalisé à
$form['#submit']
la fonction et à la déclencher correctement. J'ai dû le joindre explicitement à la sauvegarde et à la publication bouton lors de la création d'un nouvel article, et le joindre au bouton Enregistrer et conserver publié lors de la modification d'un article existant.En outre
publish
, voici quelques-unes des autres actions de bouton disponibles:la source
my_module_node_article_form_submit($form, FormStateInterface $form_state
m'a donnéTypeError: Argument 2 passed to _ccad_content_log_webform_submit() must be an instance of FormStateInterface, instance of Drupal\Core\Form\FormState given
; le changer pour_submit($form, $form_state)
corriger les erreurs.