टहनी में नल की जांच कैसे करें?


279

मुझे इस बात की जाँच करने के लिए किस निर्माण का उपयोग करना चाहिए कि क्या एक Twig टेम्पलेट में NULL है?

जवाबों:


516

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

  • 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 %}

71
और अगर कुछ रिक्त नहीं है की जाँच करने के लिए, बस करना{% if var is not null %}
जे-BC

4
त्वरित ध्यान दें कि: $ var == null $ var के साथ सही वापस आएगा 0, लेकिन $ var null वापस आ जाएगा, गलत है
daSn0wie

यह भी ध्यान दें कि $ var == 0 सच हो जाएगा अगर $ var अशक्त है
Petter Soderlund

इसके अलावा, PHP isset()फ़ंक्शन के विपरीत , एक चर परिभाषित होने पर is definedवापस आ जाएगा trueऔर यह मान शून्य है।
पावेल पेत्रोव

1
सूचना: चूँकि चर के लिए Twig 2.x जाँच मूल्य के बराबर है, जैसे Doc url नहीं देखना is_ sameasचाहिए => twig.symfony.com/doc/2.x/tests/sameas.html{% if var is same as(false) %}{% if var is sameas(false) %}
ahmed hamdy

127

डिफ़ॉल्ट मानों को टहनी में कैसे सेट करें: http://twig.sensiolabs.org/doc/filters/default.html

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

या यदि आप इसे प्रदर्शित नहीं करना चाहते हैं तो अशक्त:

{{ my_var | default("") }}

1
तो क्या यह undefined or emptyऔर के बीच अंतर करता है null?
फूली

6
ऐसा लगता है कि यह जांचने का सही तरीका है ... शर्म की बात यह है कि इसमें कई बदलाव नहीं हैं।
mr-sk

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

34

किसी भी धारणा के बिना उत्तर है:

{% 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 %}

7

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

ट्विग ( ===) में एक "पहचान" की कमी के कारण यह सबसे अच्छा है जो आप कर सकते हैं

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

जिसका अनुवाद है:

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

कौन करता है, तो अपने पर अपने अच्छे प्रकार करतब दिखाने , का मतलब है कि इस तरह के रूप बातें 0, '', FALSE, NULL, और एक अपरिभाषित वर भी कि बयान सही कर देगा।

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


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

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

@ अचंभित {% if abcxyz is none %}हो जाता है if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }। तो मूल रूप से यदि मान अपरिभाषित या अशक्त है, तो यह सच होगा।
केंडल हॉपकिंस

1
@noisebleed भी रेफरी केnone लिए एक उपनाम है । null
केंडल हॉपकिंस

इस उत्तर के बराबर भी उपयोग करने के लिए किया जाएगा {% if var is empty %} twig.sensiolabs.org/doc/tests/empty.html जो पीएचपी करने के लिए अनुवाद if (empty($var))है कि एक falsey मूल्य के खिलाफ मूल्यांकन करता है ( !isset, null, 0, array(), "", false, "0", 0.0) php.net/manual/en/function.empty.php आप कर सकते हैं {% if var is same as(var) %}पहचान के लिए भी उपयोग करें ( ===)। twig.sensiolabs.org/doc/tests/sameas.html
fyrye

5
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

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

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

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

@STTLCU वह शामिल है if var is not null
कांपिको

4

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

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}

3

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

{% if var is defined %}

var is variable is SET

{% endif %}

0

यदि आपका चर ARRAY है , तो भी कुछ विकल्प हैं:

{% if arrayVariable[0] is defined %} 
    #if variable is not null#
{% endif %}

या

{% if arrayVariable|length > 0 %} 
    #if variable is not null# 
{% endif %}

यह केवल तभी काम करेगा जब आपकी सरणी is definedऔर हैNULL

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.