Zum Inhalt springen

Frontend-User-Login in ein Formhandler multistep Formular integrieren

Erstellt am 12. Januar 2014 · 5 Antworten · letzte Antwort am 13. Januar 2014

Tags: Formhandler, Frontend-Benutzer, TYPO3 6.x, Frage

oligodrom ·

Hallo liebe TYPO3-Gemeinde,

ich bin gerade dabei, ein 4-Seitiges Formular mit dem Formhandler zu realisieren.
Auf der 2. Seite soll der User die Möglichkeit haben, sich als Frontend-User Anzumelden damit seine persönlichen Daten auf der 3. Seite vorgeladen werden können.

Hierfür habe ich einen eigenen Validator (ErrorCheck) genutzt der den Benutzer mit Username und Passwort verifiziert und auch erfolgreich eine Frontend-Session anlegt. Bis hier hin klappt alles wunderbar.

Nun versuche ich auf der 3. Seite die Formularfelder mit Hilfe eines preProcessors wie folgt vorzuladen:

preProcessors {
	1.class = Tx_Formhandler_PreProcessor_LoadDefaultValues
	1.config {			
		#Prefill field in step 3
		3 {
			vorname.defaultValue = TEXT
			vorname.defaultValue.data = TSFE:fe_user|user|first_name
		}
	}
}

Das funktioniert leider nicht. Ich vermute da die Frontend-Session noch nicht existiert hat als das Formular gestartet wurde. Wenn ich das Formular nun noch mal starte und bereits angemeldet bin, werden die Daten des fe_users erfolgreich in die 3. Seite eingefügt.

Habt ihr eine Idee wie ich das Problem in nur einem Schritt lösen kann? Also Start der fe_session durch den Validator in Schritt 2 und Übergabe der Daten aus fe_users mit Hilfe des preProcessors in Schritt 3?

Vielen Dank und viele Grüße
Robert

Schweriner ·

Ich musste leider auch schon schmerzvoll feststellen, dass Formhandler die Default Values nur im ersten Schritt anlegt und nicht für jeden Schritt seperat. Kann leider gerade nicht genau die Stelle und Art und Weise sagen wie, aber ich habe eine UserFunction eingebunden, die Felder mit Daten vorbelegt. Eine andere Möglichkeit habe ich bis heute nicht gefunden... .

oligodrom ·

Danke für den Gedankenanstoß. Habe schon darüber nachgedacht das Problem mit einer userFunc zu lösen und auch schon bisschen damit rumprobiert. Leider stehe ich damit wieder vor dem gleichen Problem. Wenn ich die userFunc über den preProcessor aufrufe, wird sie auch nur zum Start des Formulars ausgeführt. Ich müsste einen Weg finden, sie beim Aufruf der 3. Formularseite zu starten.

Schweriner ·

Probier mal eine UserFunction zum befüllen von Markern ;-)

includeLibs.meineUser= fileadmin/xy/tmpl/xyz/meineFunction.php

predef.myForm{
    name = Mein Formular
    addErrorAnchors = 0
    formValuesPrefix = formhandler
    
    
    markers {
      a_summe = USER
      a_summe {
        userFunc = user_meineFunc->main
        value = abc
      } 
}
}
oligodrom · · Beste Antwort

Am Ende war es dann wieder viel einfacher als gedacht! Wenn die die Werte nicht via Tx_Formhandler_PreProcessor_LoadDefaultValues sondern einfach als Marker übergebe, benötige ich nicht mal die UserFunction, dann reicht folgendes:

value_vorname = TEXT
value_vorname.data = TSFE:fe_user|user|first_name

Noch mal vielen Dank für die Hilfe!

Schweriner ·

Joa... in deinem Fall funktioniert es natürlich auch so hihi. Bei mir brauchte ich aber leider noch ne UserFunc 😛