2012-02-25 12 views
18

मैं अपने जीवन के लिए एक टिग लूप में </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

0

इस विशिष्ट मामले के लिए आप पहले अपनी सरणी तैयार कर सकते हैं। तो एक लूप में आप प्रत्येक पंक्ति में दो चर होंगे। http://twig.sensiolabs.org/doc/templates.html

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> 

एक वैकल्पिक तरीका है कि बहुत कम 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

धन्यवाद। मैंने एक एक्सटेंशन लिखना समाप्त कर दिया ताकि मैं कुछ php पर वापस आ सकूं। लेकिन, यह निश्चित रूप से वह उत्तर है जिसे मैं ढूंढ रहा था। –

+0

हाय हावर्ड, कोई भी परिवर्तन जो आप उस स्रोत को खोलना चाहते हैं? –

+2

एक अद्यतन: बैच फ़िल्टर Twig 1.12.3 में जोड़ा गया था। http://twig.sensiolabs.org/doc/filters/batch.html – dnagirl

संबंधित मुद्दे