Zum Inhalt springen

Fluid if Condition - Iterator Schritte

Erstellt am 7. Mai 2013 · 6 Antworten · letzte Antwort am 10. September 2013

Tags: Frage

birdy2000 ·

Hallo ich habe eine Fluid if Condition und möchte gern, dass ein Umbruch bei jedem 5 Schritt stattfindet.

<f:if condition="{iterator.cycle} % 5 == 0"></tr><tr></f:if>

So funktioniert es:

<f:if condition="{iterator.cycle} == 5"></tr><tr></f:if>

aber ich will es bei jeder 5ten Spalte so haben.

Jemand ne Idee bzw. gibt es eine Möglichkeit?

birdy2000 ·

Hallo, danke für die Antwort... aber irgendwie werd ich noch so ganz schlau daraus. Ich kann zwar Zeichenketten ausgeben bzw. Formatierungen für classes bestimmen, aber ich es bei meinem konkreten Fall aussieht stecke ich noch fest.

Ich habe mir das Beispiel von der Seite: typo3lexikon angeschaut, welches auch plausiebel ist.

<f:alias map="{mitarbeiter: {0: {vorname: 'Stefan', stadt: 'Lindlar'},1: {vorname: 'Petra', stadt: 'Lindlar'},2: {vorname: 'Sascha', stadt: 'Remscheid'},3: {vorname: 'Patrick', stadt: 'Bonn'},4: {vorname: 'Sven', stadt: 'Gummersbach'},5: {vorname: 'Andrea', stadt: 'Wuppertal'}}}">
    <table cellpadding="5" cellspacing="0" border="2">
        <f:for each="{mitarbeiter}" as="kollege">
            <f:cycle values="{0: 'green', 1: 'red', 2: 'blue'}" as="color">
                <tr>
                    <td style="color: {color}">{kollege.vorname}</td>
                    <td style="color: {color}">{kollege.stadt}</td>
                </tr>
            </f:cycle>
        </f:for>
    </table>
</f:alias>

Jedoch angewandt auf mein Problem komme ich hier nicht weiter. Ich möchte die Tabellenreihe schließen und eine neue anfangen, wenn 5 Werte in der Tabelle stehen.

Habs mal in PHP / HTML gemacht. So soll es aussehen:

<table width="875" height="700" border="1" align="center"	>	  
<?php
	for ($i = 1; $i <= 25; $i++) 
	{?>
  		<td align="center">
                <?php echo $i; ?>
                </td>
		<?php if ($i % 5 == 0)
		{
    		echo "</tr><tr>";
  		}
	}?>
	</table>

So hab ich es bis jetzt umgesetzt, aber check das nicht ganz.

<table  border="1" class="tx_feld" >
<f:for each="{felder}" as="feld">
     <f:cycle values="{5: '</tr><tr>'}" as="umbruch">
     <tr>
     <td>
         <f:link.action action="edit" arguments="{feld: feld}">{feld.idfeld}</f:link.action></td>{umbruch}
     </f:cycle></tr>
</f:for>
</table>

Die akutelle Ausgabe ist im Anhang als Bild...

Thx

feld.jpg

Unbekannter Benutzer ·

Du musst Cycle schon auch 5 Werte mitgeben, auch wenn die dann leer sind, damit er da "durchcyclen" kann.
Also sowas in der Art:

<f:cycle values="{1: '', 2: '', 3: '', 4: '', 5: '</tr><tr>'}" as="umbruch">
Nuern ·

Hallo Christian,

danke für Deine Hilfe, dieses Problem hat mich heute auch ereilt.
Eine Frage habe ich dazu noch: Wie gehe ich mit dem Thema um, wenn ich Gänsefüßchen in der Ausgabe brauche? Etwa wie <div class="xyz">

<f:cycle values="{1: '', 2: '', 3: '', 4: '', 5: '<div class="xyz">'}" as="umbruch">

Danke und Gruß
Martin

harald1972 ·

Ich hatte so ein ähnliches Problem.
Hab dafür einen VH geschrieben, mit dem ich

for($i=init; $i<max; $i+=step)

umsetze, ohne ein each-Array benutzen zu müssen.
Oder eben unabhängig von der Anzahl der Elemente im each-Array alle soundsoviel (z.B. max=5)einen Umbruch (br oder tr) machen kann.

Findet sich hier im Forum. (weiß nur nicht, wie ich das hier verlinken kann)