सत्यापित करें कि कोई फ़ील्ड खाली नहीं है


15

नोड टेम्प्लेट में फ़ील्ड खाली है या नहीं, यह जांचने के लिए सबसे अच्छा तरीका क्या है।

नोड में - example.html.twig हम "सामग्री" चर का उपयोग कर सकते हैं।

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

{% if content.field_example  %}

मैं कुछ इस तरह का उपयोग कर सकते हैं:

{% if content.field_example['#object'] is defined  %}

लेकिन सबसे अच्छी विधि क्या है?


1
हुक_परप्रोसेस का उपयोग करें और प्रोग्रामेटिक रूप से जांचें, हो सकता है कि संकेतक चर जोड़ें। नहीं तो 4k4 क्या लिखे।

जवाबों:


21

जैसे मैंने यह भी लिखा है कि आप नोड टेम्प्लेट में इकाई संदर्भ से फ़ील्ड कैसे प्रस्तुत कर सकते हैं? [Drupal 8] , सामग्री एक रेंडर सरणी है जिसमें प्रदर्शित करने के लिए तैयार डेटा शामिल है।

यदि आप किसी चीज़ की जांच या तुलना करना चाहते हैं, तो इसके बजाय मानों का उपयोग करें, जो नोड ऑब्जेक्ट पर उपलब्ध हैं।

{% if node.field_example.value %}

ध्यान दें कि संपत्ति क्षेत्र के प्रकार पर निर्भर करती है। यदि यह एक संदर्भ क्षेत्र है, तो आपको इसके बजाय target_id का उपयोग करने की आवश्यकता है। संदर्भित फ़ील्ड के लिए एक फ़ील्ड फ़ील्ड API चीट शीट से संदर्भित प्रश्न लिंक जो सामान्य फ़ील्ड प्रकार और उनके गुणों को सूचीबद्ध करता है।


छवि क्षेत्र के लिए {% node.field_article_image.target_id%}
योगेश कुशवाहा

13

आप सामग्री के अंदर रेंडर सरणी की संरचना के बारे में सुनिश्चित नहीं हो सकते हैं, इसलिए यह सबसे अच्छा तरीका नहीं है।

यह एक बेहतर समाधान हो सकता है:

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

यह जाँचता है कि क्षेत्र प्रदान करने से कोई आउटपुट उत्पन्न होता है या नहीं।

लेकिन यह निर्भर करता है, आपने फ़ील्ड प्रारूप को कैसे कॉन्फ़िगर किया है और आप क्या करने की कोशिश करते हैं। उदाहरण के लिए, यदि फ़ील्ड खाली है, तो आप एक लेबल प्रदर्शित करने के लिए कॉन्फ़िगर कर सकते हैं। फिर आपको इसे समायोजित करना होगा। यदि आप प्रदान किए गए आउटपुट पर निर्भर नहीं हैं और केवल जाँच करना चाहते हैं, यदि फ़ील्ड का डेटाबेस में कोई मान है, तो नोड ऑब्जेक्ट का उपयोग करें। देखें बरदीर का जवाब।


मैं बर्दिर के उत्तर को सही मानता हूं क्योंकि यह अधिक लचीला है।
सैंफ

@ 4k4: |renderफील्ड टेम्प्लेट से यादृच्छिक व्हाट्सएप मुद्दों के कारण पर्याप्त नहीं है, इस लिंक को देखें : ट्विग टेम्प्लेट में खाली खेतों की जांच करना जटिल है
Mojtaba Reyhani

@MojtabaReyhani: बहुत-बहुत धन्यवाद। वहां यह लिंक drupal.org/node/2783633#comment-11510195 मिला । इसे कोड में जोड़ा गया।
4k4

4

जाँच करें कि क्या टहनी टेम्प्लेटिंग ( फ़ील्ड संग्रह ) टेम्पलेट में फ़ील्ड खाली नहीं है
: फ़ील्ड-संग्रह-आइटम - फ़ील्ड-सेवाएं.html.twig

" | खाली नहीं है " का उपयोग करते हुए " | फ़ील्ड_वल्यू " का उपयोग करके मूल्य प्राप्त करने के लिए फील्ड ट्विग वैल्यू मॉड्यूल स्थापित करें

{% if content.field_work|field_value is not empty %}

       ...

{% endif %} 

1
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
  <div class="whatever_markup">
    {{ content.field_whatever }}
  </div>
{% endif %}

यह समाधान काफी बुलेट-प्रूफ है और यहां तक ​​कि पुन: उपयोग करने और / या साझा किए गए टेम्प्लेट में काम करने के लिए (जैसे एक साझा node--teaser.html.twigकई बंडलों के लिए)

  • यह सभी प्रकार के क्षेत्रों के लिए काम करता है
  • यह जाँच करता है कि क्षेत्र मौजूद है या नहीं
  • यदि क्षेत्र खाली नहीं है तो यह जाँच करता है
  • यह जाँचता है कि प्रदर्शन मोड में फ़ील्ड छिपा हुआ तो नहीं है

दोहरा नकारात्मक not ...isEmpty == trueआवश्यक है, अन्यथा एक गैर-मौजूद क्षेत्र चेक को विफल कर देगा। मैं यह भी मानता हूं कि मेरा समाधान किसी भी जाँच की तुलना में त्रुटियों के लिए बहुत तेज़ और लचीला है, जिसमें क्षेत्र का प्रतिपादन करना शामिल है।

यह किसी भी संस्था टेम्पलेट के लिए काम करना चाहिए, जैसे आप बस की जगह ले सकता node.field_xxxसे paragraph.field_xxxएक में paragraph.html.twigटेम्पलेट फ़ाइल

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