Hallo,
formhandler bietet ja die Möglichkeit die Formularwerte in einer beliebigen
Tabelle zu sichern und ist mit der "mapping" Funktionalität ziemlich flexibel.
Ist es möglich den Wert irgendwie zu transformieren oder in abhängigkeit des
POST-Parameters einen anderen Wert zu speichern?
Ich möchte zu Beispiel beim ankreuzen der Checkbox Newsletter den Wert "1"
speichern und nicht den Default-Wert "on" verwenden.
finishers {
1 {
# ....
}
2 {
class = Tx_Formhandler_Finisher_DB
config {
table = tx_mytable
fields {
# hier sollt der Wert "on" in 1 geändert werden
newsletter.mapping = newsletter
}
}
}
}
Neben der Option "mapping" gibt es für jedes Feld noch die Möglichkeit ein "preProcessing" und "postProcessing" zu definieren. Dort kannst du mit einem einfachen cObject den Wert ändern.
Hallo,
gmf schrieb
Neben der Option "mapping" gibt es für jedes Feld noch die Möglichkeit ein "preProcessing" und "postProcessing" zu definieren. Dort kannst du mit einem einfachen cObject den Wert ändern.
Danke für den Tipp!
Ich habs mal so versucht:
...
fields {
newsletter {
postProcessing = TEXT
postProcessing.value = 1
mapping = newsletter
}
}
...
Allerdings habe ich die Zeile
$options['postProcessing.']['value'] = $queryFields[$fieldname];
in "Tx_Formhandler_Finisher_DB" auskommentieren müssen damit
das postProcessing funktioniert.
Diese Variante ist natürlich noch nicht richtig. Jetzt wir immer
der Wert "1" gespeichert.
Kann ich das rein über TS lösen - dh. nur wenn der Checkbox-Wert "on" ist
sollte "1" gespeichert werden. (default in der DB ist "0").
Oder muß ich hier ein "userFunc" verwenden?
Ja, das mit dem "value" ist leider richtig, aber man könnte es auch so lösen:
...
fields {
newsletter {
postProcessing = TEXT
postProcessing.value.override = 1
}
}
...
Um das Ganze nur zu tun, wenn die Checkbox gewählt wurde:
[globalVar = GP:newsletter=on]
...
fields {
newsletter {
postProcessing = TEXT
postProcessing.value.override = 1
}
}
...
[global]
Hallo,
jetzt gibts nur mehr "normale" TS Probleme ...
hab es jetzt mit der condition versucht - die wird allerdings nicht ausgewertet.
Laut Formhandler Debug-Ausgabe ist der Newsletter-Parameter aber "on".
[globalVar = GP:newsletter=on]
plugin.Tx_Formhandler.settings.predef.contact_form.finishers.2.config.fields {
newsletter {
postProcessing = TEXT
postProcessing.value = 1
}
}
[global]
plugin.Tx_Formhandler.settings.predef.contact_form {
...
}
Mit einer anderen condition (nur zum Test auf "dayofmonth" geprüft)
hat es funktioniert.
Der prefix war schuld - so funktionierts:
[globalVar = GP:formhandler|newsletter=on]
gmf - danke nochmal für die Hinweise!