CSV-Anhang
Stell dir vor, du möchtest eine CSV-Datei an deine E-Mail anhängen, die die eingegebenen Formulardaten enthält. Das Hauptproblem, das du dabei beachten musst, ist das korrekte Escaping. Stell dir eine Logik wie diese vor:
Das würde nicht funktionieren, indem du einfach die Tokens ersetzt, weil du drei verschiedene Zeichen escapen musst:
- Das Trennzeichen (“Delimiter” -
,standardmässig) - Das Begrenzungszeichen (“Enclosure” -
"standardmässig) - Das Escape-Zeichen selbst (
\standardmässig)
Andernfalls, wenn ein Besucher z. B. Jürgen "Kloppo" als Vornamen und Portland, ME als Stadt angibt, um zu
präzisieren, welches Portland gemeint ist, würdest du am Ende etwas erhalten, das völlig ungültiges CSV ist:
Die korrekte Ausgabe wäre:
Das manuell zu tun ist schwierig, deswegen verfügt das Notification Center Pro über einen csv Twig-Filter:
Tipp
Der Twig default-Filter sorgt dafür, dass statt eines
Fehlers eine leere Ausgabe erfolgt, wenn ein Token nicht existiert.
Das war’s! Du hast nun ein Token mit dem korrekten CSV-Wert. Alles, was du noch tun musst, ist diesem Token einen Namen zu geben, es als Datei-Token zu aktivieren und ihm den gewünschten Dateinamen zu vergeben:
Dieses Token kann nun benutzt werden, um bspw. das CSV einer Mail anzuhängen. Tada! 🎉
Alle Tokens ausgeben
Wenn du einfach gerne alle Tokens ausgegeben hättest, ist das denkbar einfach:
Komplexere Aufgaben
Natürlich kannst du auch deutlich komplexere Aufgaben erfüllen. Wenn du bspw. nur die Formulardaten mit dem
passenden Formular-Token haben willst, dann bist du erstmal nur an allen form_* Tokens interessiert und willst
diese mit dem passenden formlabel_* ausstatten. Oder vielleicht willst du auch noch die Formulardaten anpassen und
Dinge berechnen oder ähnliches. Hier ein ausführliches Beispiel mit Kommentaren - kopiere dir einfach die Sachen
zusammen, die du brauchst!
Tipp
Der csv-Filter ist nicht Teil von Twig, sondern wird stattdessen vom Notification Center Pro bereitgestellt. Du
kannst auch mit einem anderen Trennzeichen arbeiten. Wenn du die Werte beispielsweise mit ; trennen möchtest,
verwende {{ row|csv(';') }}. Der zweite und dritte Parameter können genutzt werden, um das “Enclosure” und
Escape-Zeichen entsprechend anzupassen, falls erforderlich.
