Zum Inhalt springen

fe_user Registrierung mit Formhandler möglich?

Erstellt am 9. Dezember 2013 · 4 Antworten · letzte Antwort am 26. Juli 2016

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

rayphi ·

Hallo zusammen,

da ich mittlerweile ein Freund von Formhandler geworden bin habe ich mich gefragt ob es möglich sei die "sr_feuser_register" Extension durch ein Formhandler formular auszutauschen.

Theoretisch müsste ich ja nur im Finisher_DB die fe_users tabelle angeben und meine felder korrekt mappen.
Um die Passwörter ebenfalls vernünftig abzulegen hab ich mir erlaubt einen patch einzuspielen der für saltedpassword hashes sorgen soll. (http://forge.typo3.org/issues/48658)

Aktuell bekomme ich nach absenden eine leere Email und vom Finisher_Email leider passiert in der Datenbank gar nichts...

Hat da jemand eine Idee, gehe ich es grad völlig falsch an oder bzw. hab ich irgendeinen Fehler gemacht?
Beste Grüße Raphael

Meine Aktuelle Konfiguration sieht wie folgt aus:

Setup:

plugin.Tx_Formhandler.settings.predef.formhandler-feuser-registration {

	# This is the title of the predefined form shown in the dropdown box in the plugin options.
	name = Formhandler FE_USER Registration
	
	# All form fields are prefixed with this values (e.g. feregistration[name])
	formValuesPrefix = feregistration

	langFile.1 = TEXT
	langFile.1.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/lang/lang.xml

	templateFile = TEXT
	templateFile.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/html/step-1.html

	# The master template is a file containing the markup for specific field types or other sub templates (e.g. for emails). You can use these predefined markups in your HTML template for a specific form.
	masterTemplateFile = TEXT
	masterTemplateFile.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/html/mastertemplate.html


	# These wraps define how an error messages looks like. The message itself is set in the lang file.
	singleErrorTemplate {
		totalWrap = <div class="error">|</div>
		singleWrap = <span class="message">|</span>
	}
	isErrorMarker {
	    global = Global message if an error occurred 
	    #^^(filled into ###is_error###)
	    default = class="error" 
	    #^^(filled into ###is_error_[fieldname]###
	    field1 = TEXT
	    field1.value = Some message 
	    #^^(filled into ###is_error_field1###)
  	}

	preProcessors {
		1.class = PreProcessor_LoadGetPost
		2.class = PreProcessor_ValidateAuthCode
		2.config {
			redirectPage = TEXT
			redirectPage.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.validateAuthCode.successPage}
			errorRedirectPage = {$formhandlerATO.formhandler-feuser-registration.fe-reg.validateAuthCode.errorPage}
			hiddenField = hidden
		}
	}
 
	validators {
		1 {
			class = Validator_Default
			config {
				fieldConf {
					password {
						errorCheck.1 = required
					}
					password_repeat {
						errorCheck.1 = required
						errorCheck.2 = equalsField
						errorCheck.2.field = password
					}
					vorname {
						errorCheck.1 = required
					}
					name {
						errorCheck.1 = required
					}
					email {
						errorCheck.1 = required
						errorCheck.2 = email
						errorCheck.3 = isNotInDBTable
						errorCheck.3 {
							table = fe_users
							field = email
						}
					}
				}
			}
		}
	}

	# Finishers are called after the form was submitted successfully (without errors).
	finishers {

		1.class = Finisher_DB
		1.config {
			table = fe_users
			key = uid
			fields {

				email.mapping = email
				username.mapping = email
				password.mapping = password
				password.special = saltedpassword
				password.special.field = password
				first_name.mapping = vorname
				last_name.mapping = name
				company.mapping = company
				address.mapping = street
				zip.mapping = postalcode
				city.mapping = city
				telephone.mapping = telefon
				comments.mapping = message
				usergroup.ifIsEmpty = 1

				pid.postProcessing = TEXT
				pid.postProcessing.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.storagePid}
				hidden.ifIsEmpty = 1
			}
		}
		2.class = Finisher_GenerateAuthCode
		2.config {
			table = fe_users
		}
	
		# Finisher_Mail sends emails to an admin and/or the user.
		3.class = Finisher_Mail
		3.config {
			limitMailsToUser = 1
			admin {
				templateFile = TEXT
				templateFile.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/html/email-admin.html
				sender_email = {$formhandlerATO.formhandler-feuser-registration.fe-reg.email.admin.sender_email}
				to_email = {$formhandlerATO.formhandler-feuser-registration.fe-reg.email.admin.to_email}
				subject = TEXT
				subject.data = LLL:{$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/lang/lang.xml:email_admin_subject
			}
			user {
				templateFile = TEXT
				templateFile.value = {$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/html/email-user.html
				sender_email = {$formhandlerATO.formhandler-feuser-registration.fe-reg.email.user.sender_email}
				to_email = email
				subject = TEXT
				subject.data = LLL:{$formhandlerATO.formhandler-feuser-registration.fe-reg.rootPath}/lang/lang.xml:email_user_subject
			}
		}

		# Finisher_Redirect will redirect the user to another page after the form was submitted successfully.
		4.class = Finisher_Redirect
		4.config {
			redirectPage = {$formhandlerATO.formhandler-feuser-registration.fe-reg.redirectPage}
		}
	}

}

Constants:

formhandlerATO.formhandler-feuser-registration.fe-reg {
	# cat=Formhandler FE_USER Registration - FeUser/basic/10; type=string; label=Root path: Path where the Configuration was saved to.
	rootPath = fileadmin/formhandler/fe_user-registration
	email {
		user {
			# cat=Formhandler FE_USER Registration - FeUser/basic/20; type=string; label=User email sender: Email address to use as sender address for the user email.
			sender_email = raphael.tweitmann@ato.de
		}
		admin {
			# cat=Formhandler FE_USER Registration - FeUser/basic/20; type=string; label=Admin email sender: Email address to use as sender address for the admin email.
			sender_email = raphael.tweitmann@ato.de

			# cat=Formhandler FE_USER Registration - FeUser/basic/20; type=string; label=Admin email recipient: Email address of an admin to receive the information email.
			to_email = 
		}
	}
	# cat=Formhandler FE_USER Registration - FeUser/basic/40; type=string; label=Redirect Page: Page ID to redirect after successful form submission.
	redirectPage = 78
	
	# cat=Formhandler FE_USER Registration - FeUser/basic/40; type=string; label=Storage PID: Page ID to store the registrations to.
	storagePid = 35	
	validateAuthCode {
		# cat=Formhandler FE_USER Registration - FeUser/basic/40; type=string; label=Success page: Page ID to redirect to if the authentication code is valid.
		successPage = 77
		# cat=Formhandler FE_USER Registration - FeUser/basic/40; type=string; label=Error page: Page ID to redirect to if the authentication code is not valid.
		errorPage = 79
	}
}
toifel ·

Das Problem mit den Mails hatte ich auch schon mal. Ich konnte es damals lösen, indem ich die Mail-Klasse mit angegeben habe.

3.class = Tx_Formhandler_Finisher_Mail
3.config.mailer.class = Mailer_TYPO3Mailer

Sieht auch nach einer veralteten Version vom Formhandler aus, aber daran sollte es nicht scheitern. Hier mal ein Link zum Skript, an welchem ich mich damals orientiert habe: http://typo3blogger.de/newsletteranmeldung-mit-formhandler-turchen-14/
Dieses Skript läuft auch unter 6.1 - sofern man die nötigen Anpassungen an den aktuellen Formhandler noch rein bastelt. Dort wird eigentlich alles genutzt was Du auch brauchst.

rayphi ·

Naja ok im groben und ganzen funktioniert das Mailing ja das Problem entsteht ja schon vorher beim DB Finisher hier wird ja anscheinend gar nichts gemacht! Es werden weder einträge in die fe_users tabelle geschrieben noch bekomme ich irgendwelche Fehlermeldungen das dieses nicht geschehen ist... es läuft ja komplett durch und ich lande am ende auf der redirectPage :/

rayphi · · Beste Antwort

Also hab es jetzt auch selbst geschafft wer an der Lösung interessiert ist kann sie sich hier anschauen
-> http://snipt.org/Byid4

Registrierung mit allen benötigten Feldern, Email wird Benutzername, AuthCode Generierung (wird in meinem Fall an den Admin geschickt, da es sich um ein Kundenportal handelt wo sich nicht jeder registrieren soll)

password.special = saltedpassword
password.special.field = password

^^Dies ist wie erwähnt noch mit folgendem patch zu meinem Formhandler 1.6.2 hinzugekommen ('nativ' erst ab 1.7.0 verfügbar)

magr01ino ·

@rayphi - Ja, an der Lösung wäre ich sehr interessiert!! Leider gehen die snipt.org links ins Leere, scheint inzwischen den Besitzer gewechselt zu haben?