Ich versuche in einem Custom CMS Block im component twig template die einzelnen Slots für eine Galerie per loop zu erzeugen.
Z.B. so:
<slot name="image-{{ i }}"></slot>
oder so
{{ '<slot name="image-#{ i }"></slot>' }}
oder concatiert in variable:
{% set slot = '<slot name="image-' ~ i ~ '"></slot>' %} {{ slot }}
Jede Schreibweise (die in Twig so funktionieren sollte) erzeugt aber Fehler. Wird der Template Code evaluiert? Ist es nicht möglich darin Variablen zu setzen?
{% for … %}
{{ loop.index }}
{% endfor %}
Hi Max_Shop
danke für die Antwort.
Den Loop hatte ich per {% for i in 1..12 %} … {% endfor %}
geschrieben.
Macht es einen Unterschied ob man per {{ loop.index }} oder {{ i }} den Index ausgibt?
Nein, es macht kein Unterschied aus.
Wieso dein erstes Beispiel nicht funktioniert ist mir nicht wirklich klar. Was für ein Fehler wird denn bei folgendem geworfen?
<slot name="image-{{ i }}"></slot>
Statt des entsprechenden Slots wird nur ein leeres Element im HTML ausgegeben oder in anderen Schreibweisen die Twig-Brackets oder in der Console der Hinweis, dass die Variable slot nicht existiert (obwohl definitv per set gesetzt).
Dieser Code erzeugt lediglich ein HTML-Tag, z.B.
<slot name="image-1"></slot>
Habe mich zu wenig damit beschäftigt. Entweder erfolgt das später dann per JavaScript oder du müsstest selbst schon per Variable dafür sorgen, dass der Slot mit Inhalt gefüllt wird. Ich tippe eher auf letzteres.
Der Slot wird natürlich durch das entsprechende Element (referenziert durch den definierten type) befüllt/ersetzt. Anscheinend aber wird das Twig nicht richtig geparst oder die Befüllung/Ersetzung findet statt bevor das Template geparst wurde. Das würde erklären warum der Loop ansich funktioniert, die Slots aber nicht.