Wie ändere ich den Formularübermittlungs-Handler?


16

Aus irgendeinem Grund muss ich einige Zeichen (falls vorhanden) in jedem einzelnen Textfeld in irgendeiner Form ersetzen, bevor sie in der Datenbank gespeichert werden. Mit anderen Worten, ich benötige einen Haken, mit dem ich alle eingereichten Daten abrufen und deren Zeichen ersetzen kann.
Ich habe diese Lösung gefunden:

function hook_form_alter($form, $form_state, $form_id) {
  $form['#submit'] = 'my_custom_submission_function';
}

Dies ist jedoch keine gute Idee, da ich mich auch um den Rest des Einreichungsfortschritts kümmern muss. Ich muss nur einige Zeichen ersetzen. Gibt es einen Haken dafür? Was sind die Lösungen?

Antworten:


22

$form['#submit']Speichert ein Array von Formularübergabehandlern. Mit dem Code, den Sie angegeben haben, überschreiben Sie ihn, indem Sie nur Ihren eigenen Code hinzufügen. Um das gewünschte Ergebnis zu erhalten, sollten Sie Ihren Submit-Handler wie folgt als erstes Element im Array hinzufügen:

array_unshift($form['#submit'], 'mymodule_custom_submission');

Die richtigen Werte in die richtigen Formen zu bringen und einige Zeichen zu ersetzen, ist wahrscheinlich ein größeres Problem. Möglicherweise möchten Sie die zu ändernden Formulare / Felder eingrenzen, um sicherzustellen, dass nichts beschädigt wird.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.