2010-07-16 11 views

उत्तर

423

वास्तव में क्या आप की जरूरत पर निर्भर करता है:

  • is null जाँच करता है कि मूल्य null है:

    {% if var is null %} 
        {# do something #} 
    {% endif %} 
    
  • is defined चेकों चर परिभाषित किया गया है या नहीं:

    {% if var is not defined %} 
        {# do something #} 
    {% endif %} 
    

इसके अतिरिक्त is sameas परीक्षण है, जो दो मूल्यों का एक प्रकार सख्त तुलना करता है, null के अलावा अन्य मूल्यों की जाँच (जैसे false) के लिए ब्याज की हो सकती है:

{% if var is sameas(false) %} 
    {# do something %} 
{% endif %} 
+1

यह अब टहनी –

+48

के लिए सही जवाब है और अगर कुछ रिक्त नहीं है की जाँच करने के लिए, बस कर '{% यदि वर अशक्त% नहीं है}' –

+4

एक संक्षिप्त संदेश है कि: $ वर == बातिल $ वर के साथ सच वापस आ जाएगी 0 है, लेकिन $ var रिक्त है अवास्तविक लौटाते हैं – daSn0wie

5

मुझे नहीं लगता कि आप कर सकते हैं। ऐसा इसलिए है क्योंकि अगर एक चर चरम टेम्पलेट में अपरिभाषित (सेट नहीं है) है, तो यह NULL या none (जुड़वां शर्तों में) जैसा दिखता है। मुझे पूरा यकीन है कि यह टेम्पलेट में होने वाली खराब पहुंच त्रुटियों को दबाने के लिए है।

एक "पहचान" टहनी में (===) यह सबसे अच्छा है की कमी आप

{% if var == null %} 
    stuff in here 
{% endif %} 

कर सकते हैं कौन सा करने के लिए अनुवाद के कारण:

if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null) 
{ 
    echo "stuff in here"; 
} 

जो आपके type juggling पर अपने अच्छे अगर , इसका मतलब है कि 0, '', FALSE, NULL, और एक अपरिभाषित var जैसी चीजें भी यह कथन सत्य बनाती हैं।

मेरा सुझाव है कि पहचान को टिग में लागू किया जाए।

+2

केंडल को यह सुझाव देने का अधिकार है कि वे इसे कार्यान्वित करते हैं - मेरे पास टिग के जीथब इश्यू ट्रैकर पर चीजों को लागू करने के लिए अच्छे अनुभवों के अलावा कुछ भी नहीं है। वे बहुत दोस्ताना और पेशेवर हैं। – Shabbyrobe

+0

@ केंडल-हॉकिन्स उत्सुक हो गए, '{if var is none}' का उपयोग करने के लिए उपयुक्त कब है और PHP समकक्ष क्या है? – noisebleed

+0

@noisebleed '{% अगर abcxyz कोई भी% है}' 'हो जाता है अगर (isset ($ संदर्भ [" abcxyz "])) {$ _abcxyz_ = $ संदर्भ [" abcxyz "]; } और {$ _abcxyz_ = शून्य; } ' ' अगर ((शून्य === $ _abcxyz_)) {echo "hi"; } '। तो मूल रूप से यदि मान अपरिभाषित या शून्य है, तो यह सच होगा। –

108

टहनी में मूलभूत मूल्यों कैसे निर्धारित करें: http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }} 

या यह प्रदर्शित करने के लिए अगर आप नहीं चाहते हैं जब अशक्त:

{{ my_var | default("") }} 
+0

तो क्या यह 'अपरिभाषित या खाली' और 'शून्य' के बीच अंतर करता है? – Fluffy

+6

ऐसा लगता है कि यह जांचने का सही तरीका है ... शर्म की बात है कि इसमें कई अपवॉट नहीं हैं। –

+1

बिल्कुल वही जो मैं खोज रहा था। यह सुनिश्चित करना था कि आपके पास है डिफ़ॉल्ट जो आप फिर किसी अन्य चर पर डिफ़ॉल्ट करने का प्रयास कर सकते हैं जैसे: {{my_var | डिफ़ॉल्ट (my_var2)}} मैं बस का परीक्षण किया है, लेकिन आप फिर भी तरह श्रृंखला के लिए जारी कर सकते हैं: {{my_var | डिफ़ॉल्ट (my_var2) | डिफ़ॉल्ट ("my_var और my_var2 मौजूद नहीं हैं")} –

3

आप चाहे

{% if var is defined %} 

var is variable is SET 

{% endif %} 
30

किसी भी मान्यताओं के बिना जवाब है की जाँच करने के लिए निम्न कोड का उपयोग कर सकते हैं:

{% if var is null %} 

लेकिन यह सच हो जाएगा केवल अगर var बिल्कुल NULL है, और नहीं किसी भी अन्य मूल्य कि false (जैसे शून्य, खाली स्ट्रिंग और खाली सरणी) का मूल्यांकन करता है। इसके अलावा, अगर var परिभाषित नहीं किया गया है तो यह एक त्रुटि उत्पन्न करेगा।अधिक सुरक्षित तरीका होगा:

{% if var is not defined or var is null %} 

जो करने के लिए छोटा किया जा सकता:

{% if var|default is null %} 

आप default फिल्टर करने के लिए एक तर्क प्रदान नहीं करते हैं, तो यह मान लिया गया है NULL (डिफ़ॉल्ट डिफ़ॉल्ट की तरह)। तो कम से कम और सबसे सुरक्षित तरीका (मैं जानता हूँ कि) की जाँच करने के एक चर खाली (शून्य, झूठे, खाली स्ट्रिंग/सरणी, आदि) है या नहीं:

{% if var|default is empty %} 
4
 //test if varibale exist 
    {% if var is defined %} 
     //todo 
    {% endif %} 

    //test if variable is not null 
    {% if var is not null %} 
     //todo 
    {% endif %} 
+0

आपको क्यों लगता है कि यह उत्तर वर्तमान में स्वीकार किए गए एक से बेहतर है? –

+0

स्टैक ओवरव्लो में आपका स्वागत है! पहले ही स्वीकृत उत्तर से क्या अंतर है? क्या यह पुराना है? आपका उत्तर पहले से मौजूद लोगों से बेहतर क्यों है? – Artemix

+0

@STTLCU वह 'अगर var शून्य नहीं है' सहित है। – crmpicco

0

तुम भी ऐसा करने के लिए एक लाइन का उपयोग कर सकते हैं:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }} 
संबंधित मुद्दे