Zum Inhalt springen

Formhandler - Default Value aus vorherigem Step übernehmen

Erstellt am 10. September 2009 · 5 Antworten · letzte Antwort am 12. September 2009

Tags: Formhandler, Frage

miggy ·

Hallo
Ich baue mit der Formhandler Extension ein MultiStep Formular. Der im Step 1 im Feld kontaktperson_vorname eingegebene Wert soll im Step 2 als Standartwert übernommen werden. Mit folgendem TS bleibt das Feld teilnehmer1_vorname aber leer:

preProcessors {
  1 {
    class = Tx_Formhandler_PreProcessor_LoadDefaultValues
    config {
      # Step 2
      2.teilnehmer1_vorname.defaultValue {
        data = GPvar::kontaktperson_vorname
      }
    }
  }
}

Ich vermute schwer, dass irgendwas mit Zeile 7 nicht stimmt... wer hilft einem Anfänger?

gmf ·

Du kannst ja in Step 2 mit dem Marker

###value_kontaktperson_vorname###

auf den eingegebenen Wert zugreifen.

Reinhard

miggy ·

Daran dachte ich zuerst auch. Der Nachteil an dieser Lösung ist aber, dass der Wert dann jedes Mal geladen wird, wenn Step 2 angezeigt wird - oder? Falls der Benutzer aber einen anderen Vornamen für Teilnehmer 1 eingibt, soll seine Eingabe (abweichend vom Default Wert) erhalten bleiben - auch wenn der Anwender später nochmals zum Step 2 zurückkehrt.

Das Tolle am preProcessors ist, dass er nur ein einziges Mal ausgeführt wird. Kann ich mit TS nicht irgendwie auf den Inhalt der (submitted) Formularfelder zugreifen?

Gruss,
Roman

gmf ·

Das Problem ist, dass der PreProcessor genau einmal aufgerufen wird und zwar wenn das Formular zum ersten Mal geladen wird. Da sind noch keine GET/POST-Parameter vorhanden. Darum funktioniert auch deine Konfiguration nicht.

Am einfachsten könntest du das mit TypoScript oder mit einer kleinen userFunc lösen, in der du die Werte abfragst und je nach dem entweder den Wert von Schritt 1 oder einen anderen einfügst.

Mit der TS-Option "markers" kannst du eigene Marker definieren und dann im HTMl-Template verwenden:

miggy ·

Huch, das erklärt einiges - ich dachte der PreProcessor wird einmal pro Step ausgeführt. Hätt ich doch bloss das Bild im Extension Manual etwas genauer angeschaut...

Jedenfalls Danke für den Hinweis! Werde mich dann mal an einer entsprechenden userFunc versuchen.

miggy ·

Habs ohne userFunc hingekriegt:

plugin.Tx_Formhandler.settings.predef.myForm {
  markers.TEILNEHMER1_VORNAME = TEXT
  markers.TEILNEHMER1_VORNAME.data (
    GPvar:formhandler|teilnehmer1_vorname //
    GPvar:formhandler|kontaktperson_vorname
  )
}