Zum Inhalt springen

formhandler in tt_address schreiben lassen

Erstellt am 14. September 2011 · 6 Antworten · letzte Antwort am 12. September 2013

Tags: Formhandler, tt_address, Frage

Horribilis ·

Hallo allerseits,
Ich habe mal wieder Schwierigkeiten.. Dabei ist mein Wunsch ganz einfach; Ich will via formhandler direkt in tt_address schreiben. Das soll ja mittels etwas Typoscript funktionieren, dachte ich. Hier mein kläglicher Versuch:

# Anmeldungen in tt_address eintragen
    3.class = Finisher_DB
    3.config {
      table = tt_address
      fields {
           pid.mapping = nofield
           pid.ifIsEmpty= TEXT
           pid.ifIsEmpty.value = 25

          #mapping
          first_name.mapping = vorname  
          last_name.mapping = name 
          address.mapping = strasse  
          zip.mapping = plz 
          phone.mapping = phone
          email.mapping = email
      }
    }

Passieren tut aber garnichts. Nichteinmal ein Fehler oder zumindest einfach ein falscher Eintrag in tt_address erscheint. Nichteinmal ein Query wird abgesetzt 🙁

Hat das vielleicht jemand schonmal gemacht? Oder weiss was hier falsch ist? Ich bin für jede Hilfe dankbar!

cstueben ·

Hallo,

folgender Schnipsel funktioniert bei mir - allerdings nicht in Verwendung mit weiteren "finishern"...

1.class = Finisher_DB
1.config {
 table = tt_address
 key = uid
  fields {
   name.mapping = lastname
   first_name.mapping = firstname
   last_name.mapping = lastname
   phone.maping = phone
   email.mapping = email
   module_sys_dmail_html = 1
   pid = 37 
  }			
 }
}

Ich kaue gerade an der Konbination mit weiteren "finishern"...

cstueben ·

...und inzwischen funktioniert auch die Kombination mehrerer "finisher". Es lag schlicht und einfach ein einem Fehler in der Klammerung...

#angry#

spike2109 ·

Hi,

bei mir passiert einfach gar nichts ... noch nichtmal eine Fehlermeldung.

Richtige PID ist gewählt.

Die nachfolgenden Finisher (Mailversand, Redirect) werden ohne Probleme ausgeführt.

1.class = Finisher_DB
1.config {
    table = tt_address
    key = uid
    fields {
        name.mapping = lastname
        first_name.mapping = firstname
        last_name.mapping = lastname
        phone.maping = phone
        email.mapping = email
        pid = 136 			
    }
}

Hat jemand einen Ansatz, wo der Fehler liegen könnte?

Bei der Gelegenheit auch die Frage: Wie mappe ich Felder, welche in tt_address nicht vorhanden sind? Muss ich die via Extension erst hinzufügen?

Edit:
Fehlermeldung gibts im Debugmodus doch 🙂

first_name und last_name gibt es im tt_address nicht. Vermute, im obigen Beispiel wurde tt_address durch directmail erweitert.

Also muss ich alle meine Felder tt_address erst hinzufügen ...

Gibt es hier eine passende Extension, um tt_address komfortabel zu erweitern (Tabs etc), oder muss ich mir hierfür im Kickstarter selber etwas erstellen?

The_C ·

Kann mir bitte jemand sagen wie das mit dem "gender.mapping = anrede" funktioniert?
Im HTML Template ist der value auf Herr und einer für Frau das wiederum kennt ja tt_address nicht und das feld in tt_address wird nicht ausgewählt...
Ich will aber das Template nicht umschreiben da ich ein Mail versende mit einer Persönlichen Anrede.
Hier das TS das soweit gut funktioniert bis auf den gender in tt_address:
Danke schon mal für Eure Hilfe!

# Formhandler User anlegen
plugin.Tx_Formhandler.settings.predef.default {
  
  # GENERAL CONFIGURATION
  name = Default
  addErrorAnchors = 1
  formValuesPrefix = formhandler
  
  # ERRORS LAYOUT
  singleErrorTemplate {
    totalWrap = <div>|</div>
    singleWrap = <span class="error">|</span><br />
  }
  
  errorListTemplate {
    totalWrap = <ul>|</ul>
    singleWrap = <li class="error">|</li>
  }
  
  validators {
    1.class = Tx_Formhandler_Validator_Default
    1.config {
      fieldConf {
      }
    }
  }
  
  finishers {
    1.class = Tx_Formhandler_Finisher_Mail
    1.config {
      limitMailsToUser = 5
      admin {
      }
      user {
      }
    }
    2.class = Tx_Formhandler_Finisher_DB
    2.config {
      table = tt_address
      key = uid
      fields {
        pid.ifIsEmpty = 151
        gender.mapping = anrede
        first_name.mapping = vorname
        last_name.mapping = name
        email.mapping = email
        phone.mapping = telefon
        address.mapping = strasse
        zip.mapping = plz
        country.mapping = land
        #usergroup.ifIsEmpty = 1
        module_sys_dmail_html.ifIsEmpty = 1
        
      }
    }
    3.class = Finisher_GenerateAuthCode
    3.config {
      table = tt_address
    }
    
    4.class = Tx_Formhandler_Finisher_Redirect
    4.config {
    }
  }
  
/*
  gender {
    table = tt_address
    select {    
      pidInList = 151
      selectField = gender
      andWhere.data = GPvar:formhandler|anrede
    }
    renderObj = COA
    renderObj {
      10 = TEXT
      10 {
        value = Frau
        if.value = f
        if.equals.field = gender
      }
      20 = TEXT
      20 {
        value = Herr
        if.value = m
        if.equals.field = gender
      }
    }    
  }
*/
  
}
vatyxul3net ·

Für alle die hier auf der Suche vorbei kommen. Die Anrede/gender kann man wie folgt in tt_address schreiben.

plugin.Tx_Formhandler.settings.predef.gewinnspiel {
	finishers {
		10.class = Finisher_DB
		10.config {
			table = tt_address
			key = uid

			fields {
				pid.ifIsEmpty = 1306
				tstamp.mapping = TEXT
				tstamp.mapping {
					data = date : U
					strftime = %s
				}
				gender.mapping = CASE
				gender.mapping {
					key.data = GP:gewinnspiel|salutation
					Herr = TEXT
					Herr.value = m
					Frau = TEXT
					Frau.value = f
				}
				first_name.mapping = forename
				last_name.mapping = surname
				email.mapping = email
			}
		}
	}
}