Funktionen
Logik-Funktionen
Verwendung von Logik-Funktionen wie ifBlank, isBlank, map und mapi.
Logik-Funktionen ermöglichen bedingte Wertzuweisungen und Überprüfungen in Vorlagen. Diese Funktionen sind besonders nützlich, um mit leeren Werten umzugehen, Standardwerte zuzuweisen und Werte-Mappings zu erstellen.
Umgang mit leeren Werten
Diese Funktionen helfen beim sicheren Umgang mit leeren, null oder undefined Werten in Vorlagen.
isBlank() - Werte auf Leerheit prüfen
Die isBlank() Funktion prüft, ob ein Wert leer ist (null, undefined oder leerer String) und gibt true oder false zurück.
Syntax: isBlank(wert)
Name vorhanden: <<cs_{isBlank(kunde.name)}>>Nein<<else>>Ja<<es_>>
E-Mail vorhanden: <<cs_{isBlank(kunde.email)}>>Nein<<else>>Ja<<es_>>
Telefon vorhanden: <<cs_{isBlank(kunde.telefon)}>>Nein<<else>>Ja<<es_>>Als bedingte Abschnitte absichern:
Für komplexe oder kritische Einsetzungen kombinieren Sie bedingte Abschnitte mit der isBlank()-Funktion:
<<cs_{isBlank(person.name)}>>
Kein Name verfügbar.
Ein Absatz und ein Link zu einem Ansprechpartner: support[at]example.com
<<else>>
Name: <<person.name>>.
<<es_>>ifBlank() - Standardwerte für leere Felder
Die ifBlank() Funktion gibt einen Standardwert zurück, wenn der ursprüngliche Wert leer ist.
Syntax: ifBlank(wert, standardwert)
Unternehmen: <<{ifBlank(versorger.firmenname, 'Stadtwerke Musterstadt')}>>
Hotline: <<{ifBlank(versorger.hotline, '0800 123-456')}>>
Website: <<{ifBlank(versorger.website, 'Keine Website verfügbar')}>> Mapping-Funktionen
Mapping-Funktionen ermöglichen die Zuordnung von Eingabewerten zu anderen Werten, ähnlich wie Switch-Anweisungen in Programmiersprachen.
map() - Werte zuordnen (case-sensitive)
Die map() Funktion ordnet einem Eingabewert einen Ausgabewert zu. Die Übereinstimmung erfolgt exakt (case-sensitive).
Syntax: map(wert, test1, ergebnis1, test2, ergebnis2, ..., standardwert)
Expression-Klammern erforderlich: Bei der Verwendung von map() in Variablen-Definitionen müssen die geschweiften Klammern {...} verwendet werden:
✅ Richtig:
<<$anrede={map(payload.sexCode, '1', 'Herr', '2', 'Frau', 'Herr/Frau')}>>
❌ Falsch:
<<$anrede=map(payload.sexCode, '1', 'Herr', '2', 'Frau', 'Herr/Frau')>>
Ohne die Expression-Klammern wird die map() Funktion nicht ausgeführt und die Variable bleibt leer.
Kundenstatus: <<{map(kunde.status, 'A', 'Aktiv', 'I', 'Inaktiv', 'P', 'Pausiert', 'Unbekannt')}>>mapi() - Werte zuordnen (case-insensitive)
Die mapi() Funktion funktioniert wie map(), ignoriert aber die Groß-/Kleinschreibung bei der Übereinstimmung.
Syntax: mapi(wert, test1, ergebnis1, test2, ergebnis2, ..., standardwert)
Zählertyp: <<{mapi(zaehler.typ, 'smart', 'Intelligenter Zähler', 'analog', 'Analoger Zähler', 'Unbekannter Typ')}>>Das mapi() Beispiel zeigt, wie "SMART" (Großbuchstaben) erfolgreich mit "smart" (Kleinbuchstaben) in der Vorlage gematcht wird, da mapi() case-insensitive arbeitet.
String-Syntax beachten: In Tornado-Templates werden String-Parameter in Funktionen immer mit einfachen Anführungszeichen (') angegeben, nicht mit doppelten Anführungszeichen (").
map(person.status, 'A', 'Aktiv', 'I', 'Inaktiv', 'Unbekannt') ✓ Richtig
map(person.status, "A", "Aktiv", "I", "Inaktiv", "Unbekannt") ✗ FalschPraktische Beispiele
Statusmapping für Prozesse
Status: <<{map(kunde.status, 'A', 'Aktiv', 'I', 'Inaktiv', 'P', 'Pausiert', 'Unbekannt')}>>
Tarif: <<{map(kunde.tarif, 'HT', 'Hochtarif', 'NT', 'Niedrigtarif', 'ET', 'Einheitstarif', 'Standard')}>>
Zähler: <<{mapi(kunde.zaehlertyp, 'smart', 'Intelligenter Zähler', 'analog', 'Analoger Zähler', 'digital', 'Digitaler Zähler', 'Unbekannt')}>>Das mapi() Beispiel zeigt, wie "SMART" (Großbuchstaben) erfolgreich mit "smart" (Kleinbuchstaben) in der Vorlage gematcht wird, da mapi() case-insensitive arbeitet.
Komplexe Abrechnungslogik
Betrag: <<{ifBlank(rechnung.betrag, rechnung.grundpreis)}>> EUR
Status: <<{map(rechnung.zahlungsstatus, 'OFFEN', 'Zahlung ausstehend', 'TEILWEISE', 'Teilweise bezahlt', 'BEZAHLT', 'Vollständig bezahlt', 'Unbekannt')}>>
Mahnstufe: <<{map(rechnung.mahnstufe, 'M1', '1. Mahnung', 'M2', '2. Mahnung', 'M3', '3. Mahnung', 'Keine Mahnung')}>>Kombinierte Logik-Funktionen
Verbrauch: <<verbrauch.kwh>> kWh
<<cs_{isBlank(verbrauch.kategorie)}>>
Auto-Kategorie: <<{map(true,
verbrauch.kwh < 1500, 'Niedrigverbraucher',
verbrauch.kwh < 3500, 'Normalverbraucher',
'Hochverbraucher'
)}>>
<<else>>
Kategorie: <<$verbrauch.kategorie>>
<<es_>>Komplexe Bedingungen: Wenn Sie mehrere Bedingungen prüfen müssen, kombinieren Sie isBlank() mit bedingten Abschnitten und map() für logische Entscheidungen.
Hinweise
Optimierung von Logik-Funktionen:
- Einfache Fallbacks: Verwenden Sie
ifBlank()für einfache Null-Checks statt komplexer bedingter Abschnitte - Mapping-Performance:
map()undmapi()sind effizienter als verschachtelte bedingte Abschnitte - Reihenfolge beachten: Platzieren Sie häufige Werte in
map()am Anfang der Parameter-Liste - Case-Sensitivity: Verwenden Sie
mapi()nur wenn nötig, damap()etwas performanter ist
Funktions-Beschränkungen: Die folgenden Funktionen sind in Tornado nicht verfügbar und dürfen nicht verwendet werden:
if()- Verwenden Sie stattdessen bedingte Abschnitte<<cs_{bedingung}>>switch()- Verwenden Sie stattdessenmap()odermapi()nvl()- Verwenden Sie stattdessenifBlank()choose()- Verwenden Sie stattdessenmap()mit Index-Werten
Diese Funktionen führen zu Vorlagen-Fehlern und sollten durch die dokumentierten Alternativen ersetzt werden.