Template (Twig) dynamische Variablen

Guten Morgen,

hat jemand schonmal im Template, also mit Twig, dynamisch einen Variablen-Namen erstellt? Ich möchte mithilfe einer Id (aus einer Variable) eine andere Variable abfragen.

In meinem konkreten Beispiel möchte ich mithilfe der

page.header.navigation.active.id

die Child-Kategorien der aktiven Kategorie abfragen und ausgeben. Leider funktioniert es so z.B. nicht, da Twig dann daraus einen String macht:

{% set vartest = "page.header.navigation.tree."~ page.header.navigation.active.id ~".children" %}

Ich habe es schon mit der Twig Attribute-Funktion getestet, aber habe es nicht hinbekommen. Hat jemand eine Idee?

Viele Grüße
Tom

Theoretisch funktioniert es so:

{% set variableName = 'myVariable' %}
{% set dynamicValue = attribute(_context, variableName) %}

{{ dynamicValue }}

oder so:

{% set dynamicVariables = {
    'variable1': 'Wert 1',
    'variable2': 'Wert 2',
    'variable3': 'Wert 3'
} %}

{% set variableName = 'variable2' %}
{% set dynamicValue = dynamicVariables[variableName] %}

{{ dynamicValue }}

Aber mit den wenn ich diese Beispiele auf mein konkreten Anwendungsfall anpasse so mit der page.header.navigation.active.id wird mit {{dump()}} nur NULL ausgegeben. Hat jemand eine Idee woran das liegt?

Habe es dann doch hinbekommen. Falls noch jemand auf der Kategorie-Seite die Child-Kategorien der aktiven Kategorie anzeigen möchte, oder generell mit Twig dynamisch Variablen erstellen möchte hier der Code:

{% set CatId = page.header.navigation.active.id %}
{% set CatChildren = page.header.navigation.tree[CatId].children %}
{{dump(CatChildren)}}
2 Likes

CatId wird bei mir noch ausgegeben.
{{dump(CatChildren)}} kommt bei mir jedoch null

Sorry funktioniert doch. ich muss ein Tippfehler gehabt haben. Ich wollte mir die jeweiligen Unterkategorien auf einer bestimmten Kategorie im Template anzeigen lassen.

Mit

{% set CatChildren = page.header.navigation.tree[CatId].children %}

bekomme ich aber nur die oberste Ebene. Auf einer Unterkategorie die nochmals Kinderkategorien hat funktioniert das nicht.

Weil tree immer in der obersten Ebene beginnt. Für die zweite Ebene kann man folgendes machen:

{% set ActiveId = page.header.navigation.active.id %}
{% set ParentId = page.header.navigation.active.parentId %}
{% set CatChildren = page.header.navigation.tree[ParentId].children[ActiveId].children %}
{{dump(CatChildren)}}

Es gäbe zwar ein

page.header.navigation.active.children
page.header.navigation.active.parent

die sind aber null. Ich denke das ist ein Bug. Das Vorhandensein dieser Variablem würde einiges leichter machen.