i-doit twig Template Editor Referenz Diese Referenz bietet eine Übersicht über die verfügbaren Template-Funktionen und -Variablen in i-doit. Die Beispiele lassen sich im Flow hauptsächlich bei der Aktion "API-Aufruf" und "E-Mail schicken" verwenden.
Schnelleinstieg Verfügbare globale Variablen time: Aktuelle Uhrzeit (Format: HH:mm) user: Der aktuelle Benutzer 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 {
"id": "9",
"title": "admin",
"status": "Normal",
"created": "2025-10-31 11:18:22",
"created_by": "system",
"changed": "2025-10-31 11:18:22",
"changed_by": "system",
"purpose": null,
"category": "Other",
"sysid": "SYSID_1280838787",
"cmdb_status": "in operation",
"type": "Persons",
"tag": null,
"description": null,
"_created": "<span data-date=\"2025-10-31 11:18:22\" class=\"hide\"><\/span>2025-10-31 11:18:22 (system)",
"_changed": "<span data-date=\"2025-10-31 11:18:22\" class=\"hide\"><\/span>2025-10-31 11:18 (system)",
"_tag": ""
}
Basis-Attribute eines Objekts anzeigen {# Globale Kategorie - Grundlegende Informationen #}
Objekt-Titel: {{ object .C __CATG__GLOBAL.title }}
Status: {{ object .C __CATG__GLOBAL.status }}
Beschreibung: {{ object .C __CATG__GLOBAL.description }}
{# Aktuelles Datum/Zeit #}
{# YYYY-MM-DD #}
Datum: {{ date }}
{# HH:mm #}
Zeit: {{ time }}
Kategorien und Einträge Zugriff auf Kategorie-Daten {# Beispiel: Modell-Kategorie (Einzeleintrag) #}
Hersteller: {{ object .C __CATG__MODEL.manufacturer }}
Modell: {{ object .C __CATG__MODEL.title }}
{# Beispiel: IP-Adressen (Multi-Einträge) #}
{% for eintrag in object .C __CATG__IP %}
IP: {{ eintrag.ipv4_address }}
Hostname: {{ eintrag.hostname }}
{% endfor %}
Standort {# Standort-Informationen des aktuellen Objekts #}
Objekt: {{ object .C __CATG__GLOBAL.title }}
{# Der 'parent'-Wert enthält die ID des übergeordneten Standorts #}
{% if object .C __CATG__LOCATION.parent | id %}
{# Mit object(ID) laden wir das übergeordnete Objekt #}
{% set parent = object ( object .C __CATG__LOCATION.parent | id ) %}
Übergeordneter Standort: {{ parent .C __CATG__GLOBAL.title }}
{% else %}
Kein übergeordneter Standort definiert
{% endif %}
IP-Adressen mit Netzwerk {% for eintrag in object .C __CATG__IP %}
{# Basis IP-Informationen #}
IP: {{ eintrag.ipv4_address }}
Hostname: {{ eintrag.hostname }}
{# Netzwerk-Details #}
{% if eintrag.net | id %}
{% set netz = object ( eintrag.net | id ) %}
Netzwerk: {{ netz .C __CATG__GLOBAL.title }}
{% endif %}
{% endfor %}
Kontaktzuweisungen 1
2
3
4
5
6
7
8
9
10
11
12
13 {% for eintrag in object .C __CATG__CONTACT %}
Rolle: {{ eintrag.role }}
{# Verknüpfte Person laden #}
{% if eintrag.contact | id %}
{% set person = object ( eintrag.contact | id ) %}
Name: {{ person .C __CATG__GLOBAL.title }}
{% if person .C __CATS__PERSON is defined %}
E-Mail: {{ person .C __CATS__PERSON.email }}
Abteilung: {{ person .C __CATS__PERSON.department }}
{% endif %}
{% endif %}
{% endfor %}
Verknüpfte Objekte Objekt per ID laden {# Ein bestimmtes Objekt laden #}
{% set anderes_objekt = object ( 123 ) %}
{{ anderes_objekt .C __CATG__GLOBAL.title }}
{# Verknüpftes Objekt aus Attribut laden #}
{% if eintrag.parent | id %}
{% set parent = object ( eintrag.parent | id ) %}
{{ parent .C __CATG__GLOBAL.title }}
{% endif %}
Mehrere verknüpfte Objekte {# Beispiel: Software-Installationen #}
{% for eintrag in object .C __CATG__APPLICATION %}
ID: {{ eintrag._entry_id }}
{% if eintrag.application | id %}
{% set software = object ( eintrag.application | id ) %}
Software: {{ software .C __CATG__GLOBAL.title }}
Version: {{ eintrag.version }}
{% endif %}
{% endfor %}
Fortgeschrittene Beispiele Liste von Werten sammeln {# IP-Adressen sammeln #}
{% set ips = [] %}
{% for eintrag in object .C __CATG__IP %}
{% set ips = ips | merge ([ eintrag.ipv4_address ]) %}
{% endfor %}
Alle IPs: {{ ips | join ( ', ' ) }}
Fehlerbehandlung Attribut-Prüfung 1
2
3
4
5
6
7
8
9
10
11
12 {# Prüfen ob Kategorie existiert #}
{% if object .C __CATG__IP is defined %}
{# Prüfen ob Attribut existiert #}
{% for eintrag in object .C __CATG__IP %}
{% if eintrag.primary_hostaddress is defined %}
{{ eintrag.primary_hostaddress }}
{% endif %}
{% endfor %}
{% endif %}
{# Alternative mit default-Filter #}
{{ object .C __CATG__CPU.title | default ( 'Kein Titel' ) }}
Verknüpfungen prüfen {# Beispiel: Sicherer Zugriff auf Kontakte #}
{% for eintrag in object .C __CATG__CONTACT %}
Name: {{ eintrag.contact }}
Rolle: {{ eintrag.role }} {% if eintrag.primary == 'Yes' %} (Primärkontakt)
{% endif %}
{% endfor %}
Nützliche Funktionen Text übersetzen {# Kategorie-Namen übersetzen #}
{{ trans ( 'LC__CMDB__CATG__MODEL' ) }}
{# Status-Werte übersetzen #}
{{ trans ( 'LC__RECORD_STATUS__NORMAL' ) }}
Bedingungen und Filter {# Nur primäre Kontakte #}
{% for eintrag in object .C __CATG__CONTACT %}
{% if eintrag.primary == 'Yes' %}
{{ eintrag.role }} (Primärkontakt)
{% endif %}
{% endfor %}
{# Mit Standardwert wenn leer #}
{{ eintrag.description | default ( 'Keine Beschreibung' ) }}
Nützliche Twig-Filter 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 {# Text formatieren #}
{% set text = "text" %}
{# Großbuchstaben #}
{{ text | upper }}
{# Kleinbuchstaben #}
{{ text | lower }}
{# Ersten Buchstaben groß #}
{{ text | capitalize }}
{# Leerzeichen entfernen #}
{{ text | trim }}
{# Arrays/Listen bearbeiten #}
{% set liste = [ 'Server 1' , 'Server 2' , 'Server 3' , 'Server 4' , 'Server 5' ] %}
{# Array zu String #}
Server-Liste: {{ liste | join ( ', ' ) }}
{# Erstes Element #}
Erster Server: {{ liste | first }}
{# Letztes Element #}
Letzter Server: {{ liste | last }}
{# Anzahl Elemente #}
Anzahl Server: {{ liste | length }}
{# Teilmenge (Start, Länge) #}
Erste drei Server: {{ liste | slice ( 0 , 3 )| join ( ', ' ) }}
{# Zahlen formatieren #}
{% set zahl = "1234.56" %}
{# 1234.56 -> 1.234,56 #}
{{ zahl | number_format ( 2 , ',' , '.' ) }}
{# Absolutwert #}
{{ zahl | abs }}
{# Runden #}
{{ zahl | round }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 {# Aktuelles Datum/Zeit formatieren #}
{# 06.11.2025 #}
{{ date | date ( 'd.m.Y' ) }}
{# 06. November 2025 #}
{{ date | date ( 'd. F Y' ) }}
{# 14:30 #}
{{ time | date ( 'H:i' ) }}
{# Datumsattribute formatieren #}
{% set creation = object .C __CATG__GLOBAL.created %}
Original: {{ object .C __CATG__GLOBAL.created }}
Formatiert: {{ creation | date ( 'd.m.Y H:i' ) }}
{# Relative Zeitangaben #}
{{ creation | date_modify ( '+1 month' )| date ( 'd.m.Y' ) }}
Bedingte Ausgaben und Vergleiche 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 {# Mehrfachbedingungen #}
{% if status == 'active' and ( type == 'server' or type == 'client' ) %}
{# ... #}
{% endif %}
{# Switch/Case Alternative #}
{% set status = object .C __CATG__GLOBAL.status %}
{% set statusText = {
'2' : 'Normal' ,
'3' : 'Archiviert' ,
'4' : 'Gelöscht'
}[ status ] | default ( 'Unbekannt' ) %}
{# Ternärer Operator #}
{{ value ? 'Ja' : 'Nein' }}
{{ value ?: 'Standardwert' }} {# Kurzform wenn value falsy #}
7. November 2025 7. November 2025