Zum Inhalt springen

Kleine Berechnung (x+1) in Fluid

Erstellt am 15. Juni 2011 · 1 Antwort · letzte Antwort am 21. Juni 2011

Tags: Fluid, ViewHelper, Frage

emeh ·

Hallo,

ich gebe in meinem View Benutzergruppen aus, die hierarchisch aufgebaut sind. Dies funktioniert momentan sehr gut über geschachtelte UL-Listen.

<f:render partial="Membergroup/subgroups" arguments="{membergroups:membergroups, level: 0}"/>

mit dem rekursiv aufgerufenen Partial

<ul>
<f:for each="{membergroups}" as="membergroup">
	<li><f:link.action action="edit" arguments="{membergroup : membergroup}">{level}: {membergroup.name}</f:link.action>
		<f:link.action action="new" arguments="{membergroup:membergroup.uid}">(new subgroup from {membergroup.uid})</f:link.action>
		<f:render partial="Membergroup/subgroups" arguments="{membergroups : membergroup.subgroups, level: level+1}"/>
	</li>
</f:for>
</ul>

Obiges Beispiel führt momentan übrigens zu einem TYPO3-Fehler, weshalb ich hier nicht weiterkomme. Mein Ziel ist: Ich möchte mich von den Listen trennen und die Gruppen in einer Tabelle ausgeben, damit ich am Ende jeder Zeile ordentlich untereinander Icons zum Bearbeiten, Löschen, Hinzufügen von Gruppen anzeigen kann.

Nur muss ich dann manuell für eine Einrückung der Gruppennamen sorgen. Dazu möchte ich das Argument "level" benutzen, das ich initial mit 0 belege und dann bei jedem rekursiven Aufruf um eins erhöhen möchte mit {level: level+1}. Dies aber verursacht dann einen Fehler, da die Argumente als Array erwartet werden, dies jetzt aber als String interpretiert wird.

Den Wert von level möchte ich dann entweder in Klassennamen oder in Element-Stilangaben weiterverarbeiten. Das ist dann meine nächste Baustelle.

Wie kann ich wohl meinen Wert von level um eins erhöhen, um den neuen Wert dann für den geschachtelten Aufruf des Partials zu verwenden?

Besten Dank für Tipps
Martin

Unbekannter Benutzer ·

Hallo emeh,

ab Fluid 1.3.0 gibt es im ViewHelper "ForViewHelper.php" die Erweiterung iteration (siehe unten). Folgende Möglichkeiten stehen dir hiermit zur Verfügung:

- index: Zähler, beginnend ab 0
- cycle: Zähler, beginnend ab 1
- total: Gesamtanzahl
- isFirst: 1, für den ersten Durchlauf
- isLast: 1, für den letzten Durchlauf
- isEven: Durchlauf gerade
- isOdd: Durchlauf ungerade

Also so z.B.

<ul>
<f:for each="{membergroups}" as="membergroup" iteration="mgIteration">
	<li>Level: {mgIteration.index}</li>
</f:for>
</ul>

Falls du Fluid mit einer älteren Version verwendest, dann kannst du dir einen eigenen ViewHelper programmieren, indem du den ForViewHelper aus deiner Fluid Version hernimmst und mit dem Iteration-Funktion erweiterst.

Gruß.