Filter & Arbeiten mit Listen
Zuletzt aktualisiert 23 May 2026

Was ein Filter ist
Ein Filter wandelt einen Wert mit dem Pipe-Symbol | um. Der Wert links wird in den Filter rechts gespeist:
{{ "hello world" | upper }} → HELLO WORLD
{{ 1234.5 | number_format(2) }} → 1,234.50
Filter werden von links nach rechts verkettet, jeder erhält das Ergebnis des vorherigen:
{{ first_name | trim | capitalize }}
Alltägliche Formatierungsfilter
Dies sind die Standardfilter, die in Flexie Scripting verfügbar sind:
| Filter | Was er tut | Beispiel → Ergebnis |
|---|---|---|
upper / lower |
Groß-/Kleinschreibung ändern. | {{ "abc" | upper }} → ABC |
capitalize |
Den ersten Buchstaben großschreiben. | {{ "john" | capitalize }} → John |
title |
Jedes Wort großschreiben. | {{ "acme ltd" | title }} → Acme Ltd |
trim |
Umgebende Leerzeichen entfernen. | {{ " x " | trim }} → x |
default(x) |
Einen Ersatzwert verwenden, wenn leer. | {{ phone | default("N/A") }} |
number_format(d, dec, sep) |
Eine Zahl formatieren. | {{ 1234.5 | number_format(2) }} → 1,234.50 |
round(p) |
Eine Zahl runden. | {{ 3.146 | round(2) }} → 3.15 |
abs |
Absolutwert. | {{ -5 | abs }} → 5 |
length |
Elemente oder Zeichen zählen. | {{ invoices | length }} |
join(sep) |
Eine Liste zu Text zusammenfügen. | {{ ["a","b"] | join(", ") }} → a, b |
split(sep) |
Text in eine Liste aufteilen. | {{ "a,b,c" | split(",") }} |
replace({from: to}) |
Teilzeichenketten ersetzen. | {{ s | replace({"-": " "}) }} |
slice(start, len) |
Einen Teil einer Liste oder Zeichenkette nehmen. | {{ items | slice(0, 5) }} |
first / last |
Erstes oder letztes Element. | {{ invoices | first }} |
reverse |
Eine Liste oder Zeichenkette umkehren. | {{ items | reverse }} |
sort |
Eine Liste sortieren. | {{ names | sort }} |
keys |
Die Schlüssel einer Map. | {{ row | keys }} |
merge(other) |
Zwei Listen oder Maps kombinieren. | {{ a | merge(b) }} |
nl2br |
Zeilenumbrüche in HTML-<br> umwandeln. |
{{ note | nl2br }} |
striptags |
HTML-Tags entfernen. | {{ html | striptags }} |
escape |
Text HTML-sicher machen. | {{ userText | escape }} |
raw |
Ohne Escaping ausgeben (mit Bedacht verwenden). | {{ trustedHtml | raw }} |
json_encode |
Daten in eine JSON-Zeichenkette umwandeln. | {{ row | json_encode }} |
url_encode |
Text URL-sicher machen. | {{ q | url_encode }} |
map, filter, reduce, batch |
Eine Liste transformieren, einschränken, falten oder stückeln. | {{ items | filter(i => i.active) }} |
Flexies eigene Filter
Zusätzlich zum Standardumfang ergänzt Flexie diese:
| Filter | Was er tut | Beispiel |
|---|---|---|
cast_int |
Einen Wert zu einer ganzen Zahl erzwingen (entfernt Kommas). | {{ "1,234" | cast_int }} → 1234 |
cast_float(precision=0) |
Einen Wert zu einer Dezimalzahl erzwingen. | {{ "12.5" | cast_float(2) }} |
cast_string |
Einen Wert zu Text erzwingen. | {{ 123 | cast_string }} |
cast_bool |
Einen Wert zu true oder false erzwingen. | {{ "1" | cast_bool }} |
slugify(sep="-") |
Einen URL-sicheren Slug erzeugen. | {{ "Hello World!" | slugify }} → hello-world |
json_decode |
Eine JSON-Zeichenkette in Daten parsen. | {{ body | json_decode }} |
json_path(expr) |
Einen verschachtelten Wert per Pfad extrahieren. | {{ data | json_path("$.total") }} |
regex_replace(pattern, replacement, limit=-1) |
Musterbasiertes Suchen und Ersetzen. | {{ s | regex_replace("/\\s+/", " ") }} |
group_by(key) |
Eine Liste von Datensätzen nach einem Feld gruppieren. | {{ deals | group_by("stage") }} |
unique_by(key) |
Duplikate anhand eines Felds entfernen. | {{ contacts | unique_by("email") }} |
sum_by(key, scale=4) |
Ein numerisches Feld über Datensätze hinweg summieren. | {{ items | sum_by("amount") }} |
sort_by(key, dir="ASC") |
Datensätze nach einem Feld sortieren. | {{ invoices | sort_by("due_date", "DESC") }} |
Arbeiten über eine Liste von Datensätzen
Häufig holen Sie viele Datensätze ab (mit findMany, getSmartListRecords, findDeals usw.) und fassen sie dann zusammen oder formen sie um. Diese Helper erledigen genau das.
Summen und Statistiken
| Funktion | Was sie tut |
|---|---|
sumField(list, field) |
Ein Feld über eine Liste hinweg aufsummieren. |
avgField(list, field) |
Ein Feld über eine Liste hinweg mitteln. |
minField(list, key) |
Kleinster Wert eines Felds. |
maxField(list, key) |
Größter Wert eines Felds. |
countDistinct(list, field) |
Wie viele verschiedene Werte ein Feld hat. |
{% set invoices = findMany("invoice", "contact_id", id) %}
Total billed: {{ sumField(invoices, "total_incl_tax") | number_format(2) }}
Largest: {{ maxField(invoices, "total_incl_tax") | number_format(2) }}
Eine Liste umformen
| Funktion | Was sie tut |
|---|---|
collectionColumn(list, column, indexBy=null) |
Eine einzelne Spalte als flache Liste herausziehen oder, mit indexBy, eine Nachschlage-Map erstellen, deren Schlüssel eine andere Spalte ist. |
{# A flat list of every email on the account #}
{{ collectionColumn(getAccountContacts(id), "email") | join(", ") }}
Schleifen mit Gruppierung, ein ausgearbeitetes Beispiel
Rechnungen nach Status gruppiert anzeigen, mit einer Zwischensumme pro Gruppe:
{% set invoices = findMany("invoice", "contact_id", id) %}
{% set grouped = invoices | group_by("status") %}
{% for status, rows in grouped %}
{{ status | upper }} ({{ rows | length }})
{% for inv in rows | sort_by("due_date") %}
- {{ inv.number }}: {{ inv.total_incl_tax | number_format(2) }}
{% endfor %}
Subtotal: {{ rows | sum_by("total_incl_tax") | number_format(2) }}
{% endfor %}
Wiederverwendbare Blöcke, Snippets
Wenn Sie immer wieder denselben Inhaltsblock eintippen (eine Kopfzeile, eine Signatur, eine gestaltete Fußzeile), kann ihn ein Administrator als Snippet speichern, und Sie binden ihn über seinen Namen ein:
{% snippet "email_header" %}
... your content ...
{% snippet "email_footer" %}
Ein Snippet ist selbst Flexie Scripting, kann also eine eigene Logik und eigene Tokens enthalten und sieht dieselben Datensatzdaten wie das Template, das es einbindet.
Nächste Schritte
- Rezepte: diese Bausteine zu vollständigen Lösungen zusammengesetzt.
- Wo es läuft & seine Grenzen: welche Daten in welchem Kontext verfügbar sind und die Sicherheitsgrenzen.