Submit-Callback funktioniert nur, wenn das Formular auf der Action-Seite eingebunden ist
am 10.09.2013 - 08:03 Uhr in
Hallo,
wir haben ein Modul 1, welches Formular 1 baut.
Formular 1 wird auf Seite 1 als Block mit drupal_get_form('form1') angezeigt und die Werte sollen auf Seite 2 übergeben werden.
Es gibt ein Modul 2, welches ein anderes Formular 2 aufbaut.
Das Formular 2 wird als Block mit mit drupal_get_form('form2') auf dieser Seite 2 ausgegeben.
Auf Seite 2 werden über ein Modul 3 Werte ausgegeben, die sich aus einer Filterung über diese Formular ergeben.
Der action-Link lautet also für beide Seiten "Seite 2".
Bei beiden Formularen wird eine Funktion via Submit-Callback aufgerufen, die Werte des Formulars in eine Session schreibt, damit diese beim Wiederaufruf der Seiten als Default-Werte im Formular stehen.
Nun haben wir folgenden Effekt:
Bei Formular 2 funktioniert dieser Callback . Offensichtlich, weil das Formular auf der gleichen Seite angezeigt wie ausgewertet wird.
Bei Formular 1, welches auf Seite 1 angezeigt und auf Seite 2 ausgewertet wird, wird die Submit-Callback-Funktion nicht ausgeführt.
Wenn man das Formular 1 versuchsweise noch mal als Block in die Seite 2 einbindet, dann funktioniert der Callback.
Wie muß der Callback aufgerufen werden, damit er auch funktioniert, wenn das Formular nicht nochmal auf der aufgerufenen Seite eingebunden ist?
Wo ist der Gedankenfehler?
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich konnte das Problem für
am 10.09.2013 - 13:56 Uhr
Ich konnte das Problem für meine Zwecke jetzt lösen, in dem ich im Block der zweiten Seite vor dem Rendern des Formular 2's auch noch das Formular 1 mit
$temp1 = drupal_get_form('form1');
aufgerufen habe.
Damit wird die Submit-Callback-Funktion des Formular 1 im Modul 1 aufgerufen.
Auf die Idee bin ich gekommen, durch den wertvollen Hinweis von Julsen hier:
http://www.drupalcenter.de/node/47627
Ich setze den Thread aber noch nicht auf gelöst.
Erst mal richtig austesten.
Und es wäre toll, wenn mir jemand den Ablauf etwas genauer erklären könnte.