Hi!
Ich versuche seit nun einiger Zeit, Formhandler dazu zu bringen, Kunden in meiner Datenbank (nicht Typo3-DB) zu speichern. Sollte der Kunde sich erneut eintragen, soll anhand der E-Mail-Adresse geprüft werden, ob bereits ein Eintrag besteht oder nicht. Wenn ja, soll ein update des Eintrages erfolgen. Klingt einfach, ich bekomme es jedoch nicht hin...
Mein Formular schafft es, den Benutzer zu speichern. Mein Problem ist, dass Einträge trotz updateInsteadOfInsert geinsertet statt geupdated werden. Als Fehlermeldung im debugging erhalte ich vom Formhandler: UID parameter not found in GP. Cannot make update!
Laut Doku muss man ja einfach nur in .fields die Eigenschaft .key auf den Datenbankfeldnamen setzen, den man dafür benötigt. In meinem fall ist das "email".
So sieht mein TypoScript aus:
...
finishers {
1.class = Finisher_Mail
1.config {
mailer.class = Mailer_TYPO3Mailer
}
2.class = Finisher_DifferentDB
2.config {
host = localhost
db = ***
port = 3306
username = ***
password = ***
driver = mysql
table = customer
updateInsteadOfInsert = 1
key = email
fields {
email.mapping = email
company.mapping = firma
preName.mapping = vname
title.mapping = anrede
familyName.mapping = name
street.mapping = strasse
postalcode.mapping = plz
city.mapping = ort
fon.mapping = telefon
fax.mapping = telefax
mobil.mapping = mobil
}
}
3.class = Tx_Formhandler_Finisher_Redirect
3.config {
}
}
...
Im HTML-Template meines Formulares habe ich nun, wie in der Doku beschrieben, ein hiddenfield angelegt:
<input type="hidden" name="formhandler[email]" value="email" />
So funktioniert es schonmal nicht... ich erhalte immer den oben beschriebenen Fehler und danach wird einfach ein insert gemacht...
Ich das mit dem hidden field auch in verschiedenen Ausführungen gestestet. z.B.:
<input type="hidden" name="email" value="ZUM_TESTEN_EINE_EMAILADRESSE_DIE_BEREITS_EXISTIERT" />
<input type="hidden" name="email" value="formhandler[email]" />
<input type="hidden" name="uid" value="email" />
und so weiter...
Hat jemand eine Idee?