Skip to content

Commit 019239c

Browse files
committed
Documented more complex tasks for Twig and CSV
1 parent abdadd4 commit 019239c

File tree

2 files changed

+119
-5
lines changed

2 files changed

+119
-5
lines changed

docs/notification-center-pro/custom-tokens/examples/csv-attachment.de.md

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ firstname,lastname,city
3535
Das manuell zu tun ist schwierig, deswegen verfügt das Notification Center Pro über einen `csv` Twig-Filter:
3636

3737
```twig
38-
{% set headers = [
38+
{% set header = [
3939
'firstname',
4040
'lastname',
4141
'city',
4242
] %}
43-
{{ headers|csv }}
43+
{{ header|csv }}
4444
{% set row = [
4545
parsedTokens.form_firstname|default(''),
4646
parsedTokens.form_lastname|default(''),
@@ -61,9 +61,66 @@ Namen zu geben, es als Datei-Token zu aktivieren und ihm den gewünschten Datein
6161

6262
Dieses Token kann nun benutzt werden, um bspw. das CSV einer Mail anzuhängen. Tada! 🎉
6363

64+
### Alle Tokens ausgeben
65+
66+
Wenn du einfach gerne alle Tokens ausgegeben hättest, ist das denkbar einfach:
67+
68+
```twig
69+
{{ parsedTokens|keys|csv }} {# Nimmt nur die Keys als Header #}
70+
{{ parsedTokens|csv }} {# Nimmt nur die Werte als Reihe #}
71+
```
72+
73+
### Komplexere Aufgaben
74+
75+
Natürlich kannst du auch deutlich komplexere Aufgaben erfüllen. Wenn du bspw. nur die Formulardaten mit dem
76+
passenden Formular-Token haben willst, dann bist du erstmal nur an allen `form_*` Tokens interessiert und willst
77+
diese mit dem passenden `formlabel_*` ausstatten. Oder vielleicht willst du auch noch die Formulardaten anpassen und
78+
Dinge berechnen oder ähnliches. Hier ein ausführliches Beispiel mit Kommentaren - kopiere dir einfach die Sachen
79+
zusammen, die du brauchst!
80+
81+
```twig
82+
{# Definieren wir zunächst zwei Arrays für die Kopfzeile und die Werte-Zeile#}
83+
{% set header = [] %}
84+
{% set row = [] %}
85+
86+
{% for token in rawTokens %}
87+
{# So kannst du die Token filtern, die "form_" in ihrem Namen haben #}
88+
{% if 'form_' in token.name %}
89+
90+
{% set headerValue = token.name %} {# So nimmst du den Token-Namen als Header #}
91+
{% set headerValue = token.name|replace({'form_': ''}) %} {# oder möchtest du das "form_" aus dem Namen entfernen? #}
92+
93+
{# oder möchtest du das "form_" aus dem Token entfernen und den passenden Token-Wert aus "formlabel_*" nehmen? #}
94+
{% set labelTokenName = token.name|replace({'form_': 'formlabel_'}) %}
95+
{% if rawTokens.has(labelTokenName) %}
96+
{% set headerValue = rawTokens.byName(labelTokenName).parserValue %}
97+
{% else %}
98+
{% set headerValue = token.parserValue %} {# wir behalten den ursprünglichen Token-Namen, wenn kein passendes „formlabel_*“-Token gefunden wurde (sollte nicht passieren) #}
99+
{% endif %}
100+
101+
{% set header = header|merge([headerValue]) %} {# unseren transformierten Header-Wert als Header verwenden #}
102+
103+
104+
{# unsere spezielle Transformation nur auf das Token "form_firstname" anwenden #}
105+
{% if token.name is same as 'form_firstname' %}
106+
{% set rowValue = token.value|upper %} {# nach Belieben transformieren, indem du Twig-Filter und -Funktionen auf den Rohwert anwendest (kann ein Array sein) #}
107+
{% else %}
108+
{% set rowValue = token.parserValue %} {# den ursprünglichen Parserwert beibehalten (ist immer ein String) #}
109+
{% endif %}
110+
{% set row = row|merge([rowValue]) %} {# unseren transformierten Wert als Zeilenwert verwenden #}
111+
112+
113+
{% endif %}
114+
115+
{% endfor %}
116+
{# Jetzt müssen wir nur noch die Arrays ausgeben und sie als CSV formatieren #}
117+
{{ header|csv }}
118+
{{ row|csv }}
119+
```
120+
64121
{{% notice tip %}}
65-
Der `csv`-Filter ist nicht Teil von Twig, sondern wird stattdessen vom Notification Center Pro bereitgestellt. Du
66-
kannst auch mit einem anderen Trennzeichen arbeiten. Wenn du die Werte beispielsweise mit `;` trennen möchtest,
67-
verwende `{{ row|csv(';') }}`. Der zweite und dritte Parameter können genutzt werden, um das "Enclosure" und
122+
Der `csv`-Filter ist nicht Teil von Twig, sondern wird stattdessen vom Notification Center Pro bereitgestellt. Du
123+
kannst auch mit einem anderen Trennzeichen arbeiten. Wenn du die Werte beispielsweise mit `;` trennen möchtest,
124+
verwende `{{ row|csv(';') }}`. Der zweite und dritte Parameter können genutzt werden, um das "Enclosure" und
68125
Escape-Zeichen entsprechend anzupassen, falls erforderlich.
69126
{{% /notice %}}

docs/notification-center-pro/custom-tokens/examples/csv-attachment.en.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,63 @@ it as a file token and give it your desired filename:
6060

6161
This token can now be used to e.g. attach it to an e-mail. Tada! 🎉
6262

63+
### Output all tokens
64+
65+
If you simply want to output all tokens, this is very easy:
66+
67+
```twig
68+
{{ parsedTokens|keys|csv }} {# Takes only the keys as header #}
69+
{{ parsedTokens|csv }} {# Takes only the values as row #}
70+
````
71+
72+
### More complex tasks
73+
74+
Of course, you can also perform much more complex tasks. For example, if you only want to have the form data with the
75+
matching form token, then you are only interested in all `form_*` tokens and want to equip them
76+
with the matching `formlabel_*`. Or maybe you also want to customize the form data and calculate
77+
values etc. Here is a detailed example with comments - just copy and paste the things
78+
that you need!
79+
80+
```twig
81+
{# First, let's define two arrays for the header and the row so we can add values to them #}
82+
{% set header = [] %}
83+
{% set row = [] %}
84+
85+
{% for token in rawTokens %}
86+
{# This is how you can filter those tokens that have "form_" in their name #}
87+
{% if 'form_' in token.name %}
88+
89+
{% set headerValue = token.name %} {# use our token name as header #}
90+
{% set headerValue = token.name|replace({'form_': ''}) %} {# or would you like to strip the "form_" of the token? #}
91+
92+
{# or would you like to strip the "form_" of the token and take the matching "formlabel_*" token value? #}
93+
{% set labelTokenName = token.name|replace({'form_': 'formlabel_'}) %}
94+
{% if rawTokens.has(labelTokenName) %}
95+
{% set headerValue = rawTokens.byName(labelTokenName).parserValue %}
96+
{% else %}
97+
{% set headerValue = token.parserValue %} {# keep original token name if no matching "formlabel_*" token was found (should not happen) #}
98+
{% endif %}
99+
100+
{% set header = header|merge([headerValue]) %} {# use our transformed header value as header #}
101+
102+
103+
{# apply our special transformation only to the "form_firstname" token #}
104+
{% if token.name is same as 'form_firstname' %}
105+
{% set rowValue = token.value|upper %} {# transform as you like using Twig filters and functions on the raw value (might be an array) #}
106+
{% else %}
107+
{% set rowValue = token.parserValue %} {# keep original parser value (always a string) #}
108+
{% endif %}
109+
{% set row = row|merge([rowValue]) %} {# use our transformed value as row value #}
110+
111+
112+
{% endif %}
113+
114+
{% endfor %}
115+
{# And now, all we need to do is output the arrays and format them as CSV #}
116+
{{ header|csv }}
117+
{{ row|csv }}
118+
```
119+
63120
{{% notice tip %}}
64121
The `csv` filter is not part of Twig but instead provided by the Notification Center Pro. You can also work with a
65122
different delimiter. If you need to separate the values by `;` for example, use `{{ row|csv(';') }}`. The second and

0 commit comments

Comments
 (0)