Ich habe eines meiner Drupal 7-Module auf 8 aktualisiert und habe ein Problem mit meiner Formularänderung. Ich füge eine Validierungsfunktion und einen Submit-Handler hinzu. Die Validierungsfunktion wird gerade aufgerufen, aber die Submit-Funktion wird nicht ausgelöst. Ich frage mich, ob dies bedeutet, dass es einen Symfony-ähnlichen Ansatz gibt, mit dem Übergabehandler zu vorhandenen Formularen hinzugefügt werden müssen. Ich habe viel gesucht und kann keine Beispiele finden. Ich habe auch einige in Arbeit befindliche D8-Module durchgesehen, aber ich habe dort auch keine wirklichen Arbeitsbeispiele gefunden.
Hat jemand eine Ahnung, was der richtige Drupal 8-Weg dazu ist?
Antworten:
Entsprechend dem Beispiel in der Dokumentation ist es dasselbe wie für Drupal 7:
Sie finden ähnliche (funktionierende) Logik in
contact_form_user_form_alter()
editor_form_filter_format_form_alter()
locale_form_language_admin_edit_form_alter()
Und noch ein paar andere.
quelle
Sie können mit dem folgenden Code hinzufügen, wie viele Submit-Handler Sie möchten:
Wenn Sie nach dem standardmäßigen Submit-Handler einen Submit-Handler hinzufügen möchten (einen Submit-Handler, der nach dem Submit-Rückruf aufgerufen wird), können Sie Folgendes verwenden.
So entfernen Sie den Submit-Handler:
quelle
Das Verhalten ist entweder geändert oder von Fall zu Fall unterschiedlich. Mit dem Bestätigungsformular zum Löschen mehrerer Knoten
@ Clives Code bewirkt, dass Drupal den Haupt-Handler ignoriert. In diesem Fall fügen Sie den Handler dem
$form['#submit']
Abschnitt hinzu:quelle
So hängen Sie einen benutzerdefinierten Submit-Handler an das Add / Edit-Formular des Artikelknotens in Drupal 8 an:
Ich konnte einen benutzerdefinierten Submit-Handler nicht erfolgreich anhängen
$form['#submit']
und die Funktion ordnungsgemäß auslösen. Ich musste es beim Erstellen eines neuen Artikels explizit an die Schaltfläche Speichern und veröffentlichen anhängen und beim Bearbeiten eines vorhandenen Artikels an die Schaltfläche Speichern und veröffentlicht lassen .Außerdem
publish
sind hier einige der anderen verfügbaren Tastenaktionen:quelle
my_module_node_article_form_submit($form, FormStateInterface $form_state
habe es mir gegebenTypeError: Argument 2 passed to _ccad_content_log_webform_submit() must be an instance of FormStateInterface, instance of Drupal\Core\Form\FormState given
; Ändern Sie es, um_submit($form, $form_state)
die Fehler zu beheben.