Zum Inhalt springen

Formhandler: Finisher_DifferentDB und updateInsteadOfInsert

Erstellt am 14. November 2012 · Noch keine Antworten

Tags: Frage

fheinrich ·

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?