2012-02-25 12 views
18

nie mogę dla życia mnie dowiedzieć się, jak dodać </tr><tr> co drugi iteracji w pętli patyk.Jak zrobiłbyś stolik dwukolumnowy z gałązką?

Na przykład:

$numArray = array(12,13,14,15,16,17,18); 

Przekazywana do gałązka, bym pętla stół jak:

<table> 
    {% for num in numArray %} 
    <tr> 
     <td> 
     {{num}} 
     </td> 
    </tr> 
    {% endfor %} 
</table> 

To byłoby wyjście:

+-----------+ 
| 12  | 
+-----------+ 
| 13  | 
+-----------+ 
| 14  | 
+-----------+ 
| 15  | 
+-----------+ 
| 16  | 
+-----------+ 
| 17  | 
+-----------+ 
| 18  | 
+-----------+ 

Co chciałbym zrobić jest coś takiego:

+-----------+-----------+ 
| 12  | 13  | 
+-----------+-----------+ 
| 14  | 15  | 
+-----------+-----------+ 
| 16  | 17  | 
+-----------+-----------+ 
| 18  |   | 
+-----------+-----------+ 

Ale nie mogę dla życia mnie wymyślić sposób na przemian moje wejście rzędzie z niczego, co nie wydaje się hacky. Szczerze mówiąc, nie mogę nawet stać się hacką do pracy. Czy istnieje metoda na to? A może powinienem napisać własne rozszerzenie?

Odpowiedz

29

Właściwym sposobem na osiągnięcie tego jest użycie Filtr wsadowy. Jest nowy w 1.12.3.

<table> 
{% for row in numArray|batch(2) %} 
    <tr> 
    {% for column in row %} 
    <td>{{ column }}</td> 
    {% endfor %} 
    </tr> 
{% endfor %} 
</table> 

Ref: http://twig.sensiolabs.org/doc/filters/batch.html

+0

Taka niesamowita funkcja! – webDEVILopers

5

Coś jak to będzie działać:

<table> 
    <tr> 
    {% for num in numArray %} 
     <td> 
     {{num}} 
     </td> 
    {% if loop.index is even %} 
    </tr> 
    <tr> 
    {% endif %} 
    {% endfor %} 

    {% if num|length is odd %} 
    <td></td> 
    {% endif %} 
    </tr> 
</table> 

Alternatywnie, że czuje się znacznie mniej hacky:

<table> 
    {% for i in range(0, numArray|length-1, 2) %} 
    <tr> 
    <td>{{ numArray[i] }}</td> 
    <td>{{ numArray[i+1]|default("") }}</td> 
    </tr> 
    {% endfor %} 
</table> 
+0

Dziękuję. Skończyło się na pisaniu rozszerzenia, więc mogłem wrócić do php. Ale na pewno jest to odpowiedź, której szukałem. –

+0

Witaj Howard, jakakolwiek zmiana chcesz otworzyć źródło tego rozszerzenia? –

+2

aktualizacja: Filtr wsadowy został dodany w Gitarze 1.12.3. http://twig.sensiolabs.org/doc/filters/batch.html – dnagirl

Powiązane problemy