2011-09-18 11 views
154

मैं Twig का उपयोग templating इंजन के रूप में कर रहा हूं और मैं वास्तव में इसे प्यार करता हूँ। हालांकि, अब मैं एक ऐसी स्थिति में चला गया हूं जो मुझे मिला है उससे सरल तरीके से पूरा करने योग्य है।ट्विग: if_array या अगर कथन के भीतर समान संभव है?

{% for myVar in someArray %}  
    {% set found = 0 %} 
    {% for id, data in someOtherArray %} 
     {% if id == myVar %} 
      {{ myVar }} exists within someOtherArray. 
      {% set found = 1 %} 
     {% endif %} 
    {% endfor %} 

    {% if found == 0 %} 
     {{ myVar }} doesn't exist within someOtherArray. 
    {% endif %} 
{% endfor %} 

क्या मैं देख रहा हूँ और अधिक कुछ इस तरह है:

{% for myVar in someArray %}  
    {% if myVar is in_array(array_keys(someOtherArray)) %} 
     {{ myVar }} exists within someOtherArray. 
    {% else %} 
     {{ myVar }} doesn't exist within someOtherArray. 
    {% endif %} 
{% endfor %} 

वहाँ इस जो मैंने नहीं देखा है पूरा करने के लिए एक रास्ता है

यह क्या मैं अभी है अभी तक?

यदि मुझे अपना स्वयं का एक्सटेंशन बनाना है, तो मैं परीक्षण फ़ंक्शन के भीतर myVar तक कैसे पहुंच सकता हूं?

आपकी मदद के लिए धन्यवाद!

+3

Яaffael1984 सही जवाब है। लेकिन आप जो करने की कोशिश कर रहे हैं उसे नियंत्रक में किया जाना चाहिए, न कि दृश्य में! अपनी सरणी को प्रारूपित करें और फिर सर्वोत्तम पठनीयता के लिए दृश्य को एक साफ चीज़ दें। – Vivien

+3

मुझे लगता है कि यह वास्तव में संदर्भ पर निर्भर करता है जिस तरह से अधिक समझ में आता है, आपको नहीं लगता? – sprain

उत्तर

357

तुम बस

{% if myVar is in_array(array_keys(someOtherArray)) %} 

से

{% if myVar in someOtherArray|keys %} 

in अपने दूसरे कोड-ब्लॉक की दूसरी पंक्ति बदलना होगा रोकथाम-ऑपरेटर और keys एक फिल्टर है कि रिटर्न एक सरणियों कुंजी है।

+87

यदि आप PHP में in_array() के समान प्राप्त करना चाहते हैं, तो कुंजी – Burgi

+16

+ 1 फ़िल्टर को छोड़ दें और अस्वीकृति '{% अगर आइटम सरणी%} में नहीं है 'और' {% अगर _entry.id नहीं है %} ', इसलिए यह इस '{% से भिन्न है यदि var var null%}' है। – insertusernamehere

+8

आप परिभाषित भी कर सकते हैं: '{% अगर कुछ अन्यअरे। MyVar परिभाषित%}' (http://twig.sensiolabs.org/doc/tests/defined.html) – tight

43

बस कुछ चीजों को साफ़ करने के लिए यहां क्लिक करें। स्वीकार किया गया उत्तर PHP in_array जैसा नहीं करता है।

in_array निम्नलिखित अभिव्यक्ति उपयोग पीएचपी के रूप में ही करने के लिए:

{% if myVar in myArray %} 

आप नकारना को यह आप इस का उपयोग करना चाहिए चाहते हैं:

{% if myVar not in myArray %} 
+1

ये दो बिंदु टिप्पणियों द्वारा कवर किए गए प्रतीत होते हैं 2012 में स्वीकार किए गए उत्तर पर वापस। यह उत्तर कुछ भी अतिरिक्त नहीं लग रहा है। –

+5

@ विलियम Isted यह जवाब twig में PHP के 'in_array() 'करने का सही तरीका जोड़ता है। – elvismdev

5

एक और उदाहरण निम्नलिखित @jake stayman:

{% for key, item in row.divs %} 
    {% if (key not in [1,2,9]) %} // eliminate element 1,2,9 
     <li>{{ item }}</li> 
    {% endif %} 
{% endfor %} 
संबंधित मुद्दे