2012-02-25 5 views
18

저는 Twig 루프에서 OTHER 반복마다 </tr><tr>을 추가하는 방법을 알지 못합니다. 예를 들어어떻게 나뭇 가지로 두 개의 기둥 형 테이블을 만들겠습니까?

: 나는 루프 것

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

통과 나뭇 가지하기, 테이블과 같은 :

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

이는 것 출력 : 내가하고 싶은 무엇

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

다음과 같이 표시됩니다.

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

그러나 나는 내 인생에있어 내 행 입력을 해킹하지 않는 것으로 바꾸는 방법을 찾아 낼 수 없습니다. 솔직히 나는 일하기에 해키를 얻을조차 수 없습니다. 이 방법이 있습니까? 또는 내 확장 프로그램을 작성해야합니까?

답변

29

이 일을 적절한 방법은을 사용을 배치 필터. 1.12.3에서 새로 추가되었습니다.

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

참조 : http://twig.sensiolabs.org/doc/filters/batch.html

+0

멋진 기능! – webDEVILopers

5

뭔가 일하는 것이이 사이트에서 첫 번째 예제를보십시오 : 더 적은 해키 느낌

<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> 

다른 방법 :

<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

감사합니다. 나는 PHP로 돌아갈 수 있도록 확장 기능을 작성했다. 그러나 이것은 확실히 내가 찾고있는 대답입니다. –

+0

안녕하세요, 변경 사항을 소스로 열려면 변경 하시겠습니까? –

+2

업데이트 : 배치 필터가 Twig 1.12.3에 추가되었습니다. http://twig.sensiolabs.org/doc/filters/batch.html – dnagirl

관련 문제