logo

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - नया लेआउट बिल्डर अनुभव❗

एक्स्ट्रा ब्लॉक टाइप्स (EBT) - स्टाइलिश, कस्टमाइज़ेबल ब्लॉक टाइप्स: स्लाइडशो, टैब्स, कार्ड्स, एकॉर्डियन्स और कई अन्य। बैकग्राउंड, DOM बॉक्स, जावास्क्रिप्ट प्लगइन्स के लिए बिल्ट-इन सेटिंग्स। आज ही लेआउट बिल्डिंग का भविष्य अनुभव करें।

डेमो EBT मॉड्यूल्स EBT मॉड्यूल्स डाउनलोड करें

❗एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - नया पैराग्राफ्स अनुभव

एक्स्ट्रा पैराग्राफ टाइप्स (EPT) - एनालॉजिकल पैराग्राफ आधारित मॉड्यूल्स का सेट।

डेमो EPT मॉड्यूल्स EPT मॉड्यूल्स डाउनलोड करें

स्क्रॉल

Twig टेम्पलेट्स में वेरिएबल्स का पता लगाना और जाँच करना

03/10/2025, by Ivan

Menu

Twig टेम्पलेट फ़ाइल के साथ काम करते समय अधिकांश वेरिएबल्स टेम्पलेट फ़ाइल की टिप्पणियों (comments) में प्रलेखित होते हैं। हालाँकि, जब ऐसा नहीं होता, या जब थीम्स या मॉड्यूल नए वेरिएबल्स जोड़ते हैं, तो हमें सभी उपलब्ध वेरिएबल्स को खोजने का तरीका चाहिए। Twig टेम्पलेट फ़ाइलों में वेरिएबल्स का पता लगाने और जाँच करने के लिए dump() फ़ंक्शन प्रदान करता है।

यदि डिबगिंग सक्षम नहीं है तो dump() फ़ंक्शन कोई आउटपुट प्रदर्शित नहीं करेगा। जानें, Twig डिबगिंग कैसे सक्षम करें।

सक्रिय करने के बाद, dump() फ़ंक्शन टेम्पलेट में किसी वेरिएबल या वेरिएबल्स की जानकारी आउटपुट करने के लिए उपयोग किया जा सकता है।

एक वेरिएबल की जाँच

यदि आपके टेम्पलेट में title वेरिएबल है, तो निम्नलिखित कोड उसके कंटेंट को टेम्पलेट में प्रदर्शित करेगा:

{{ dump(title) }}

टेम्पलेट में सभी उपलब्ध वेरिएबल्स का पता लगाना

सभी उपलब्ध वेरिएबल्स और उनके कंटेंट को टेम्पलेट में प्रदर्शित करने के लिए, टेम्पलेट में निम्नलिखित जोड़ें (डिबग सक्षम करने के बाद):

{{ dump() }}

केवल उपलब्ध वेरिएबल कीज प्रदर्शित करने के लिए उपयोग करें:

{{ dump(_context|keys) }}

सभी Twig टेम्पलेट्स में अतिरिक्त ग्लोबल वेरिएबल्स उपलब्ध हैं:

  • _self मौजूदा टेम्पलेट को संदर्भित करता है और इसमें टेम्पलेट की विस्तारित जानकारी होती है, जैसे कि कंपाइल्ड टेम्पलेट क्लास का नाम और Twig एनवायरनमेंट की जानकारी। _self पुराना है और Twig 2.x में हटा दिया गया है।
  • _context मौजूदा कॉन्टेक्स्ट को संदर्भित करता है और इसमें सभी वेरिएबल्स होते हैं जो टेम्पलेट में पास किए गए हैं, जैसे theme() से भेजे गए, प्रीप्रोसेस में तैयार किए गए या टेम्पलेट में सेट किए गए वेरिएबल्स। {{ dump() }} का उपयोग बिना किसी वेरिएबल के {{ dump(_context) }} के बराबर है।
  • _charset मौजूदा कैरेक्टर सेट को संदर्भित करता है।

dump() से सावधान रहें

यदि आप सभी वेरिएबल्स देखना चाहते हैं लेकिन dump() रिकर्सन या किसी अन्य कारण से मेमोरी खत्म कर देता है, तो आप _context देख सकते हैं और उसमें मौजूद सभी कीज देख सकते हैं:

<ol>
  {% for key, value in _context  %}
    <li>{{ key }}</li>
  {% endfor %}
</ol>

फिर कंडीशनल चेक (जैसे {% if loop.index == 2 %}) का उपयोग करें और केवल आवश्यकता होने पर उस मान को आउटपुट करें।

अधिक जानकारी

Twig dump फ़ंक्शन दस्तावेज़ देखें, ताकि dump फ़ंक्शन के बारे में अधिक जान सकें।

xdebug के साथ डिबगिंग

सबसे अधिक अनुशंसित तरीका है कि आप xdebug प्लगइन के साथ एक IDE का उपयोग करें।

सेटअप करने के लिए सबसे सरल कॉन्फ़िगरेशन है PHPStorm (व्यावसायिक) और xdebug का उपयोग करना। Microsoft VSCode एक मुफ्त और ओपन-सोर्स IDE है, जिसमें प्लगइन्स हैं जो वही काम करेंगे, लेकिन आपको व्यावसायिक सॉफ़्टवेयर खरीदने की आवश्यकता नहीं होगी।

xdebug का उपयोग करने से आप प्रक्रिया को स्टेप-बाय-स्टेप देख सकते हैं, वेरिएबल्स की सामग्री देख सकते हैं, और ऐसा करते समय आप dump या kint के उपयोग से उत्पन्न अनंत लूप जैसी समस्याओं से बच सकते हैं।

twig_xdebug नामक एक छोटा लेकिन उपयोगी मॉड्यूल xdebug में उपलब्ध वेरिएबल्स को प्रदर्शित करने में मदद कर सकता है।

kint के साथ डिबगिंग

Twig में dump() फ़ंक्शन अक्सर वेब पेज पर बहुत सारा टेक्स्ट प्रिंट करता है, जिससे आवश्यक जानकारी ढूंढना मुश्किल हो जाता है।

dump() का एक विकल्प है kint, एक PHP डिबगिंग टूलkint() फ़ंक्शन उसी तरह काम करता है जैसे ऊपर dump(), लेकिन यह वेरिएबल्स के लिए एक विस्तृत/विस्तार योग्य इंटरफ़ेस प्रदान करता है।

Devel प्रोजेक्ट एक devel kint मॉड्यूल प्रदान करता है, जो डेवलपर्स को dump() की बजाय kint() का उपयोग करने की अनुमति देता है।

1. Devel मॉड्यूल डाउनलोड करें।
2. devel kint मॉड्यूल इंस्टॉल करें।
3. dump() की तरह, kint() भी डिबग सक्षम किए बिना आउटपुट नहीं दिखाएगा। जानें, Twig डिबगिंग कैसे सक्षम करें।
4. अपने .twig फ़ाइलों में वेरिएबल्स की जाँच करने के लिए kint() का उपयोग करें, जैसा कि dump() में बताया गया है।
5. यदि आवश्यक हो तो Search Kint मॉड्यूल डाउनलोड और इंस्टॉल करें ताकि आप nested वेरिएबल्स की सूची में खोज कर सकें।

मेथड और क्लास whitelist पॉलिसी

ऑब्जेक्ट्स के साथ काम करते समय हम TwigSandboxPolicy क्लास के माध्यम से केवल एक निश्चित सेट के getter और setter मेथड्स को व्हाइटलिस्ट करते हैं। यह आपके टेम्पलेट्स में रैंडम मेथड्स को कॉल करने से रोकने के लिए किया जाता है। उदाहरण: {{ node.delete }} किसी नोड ऑब्जेक्ट पर नोड को हटा सकता है यदि whitelist मौजूद न हो। आप इस whitelist को बढ़ा सकते हैं, इसके लिए अपने settings.php में निम्नलिखित जोड़ें:

$settings['twig_sandbox_whitelisted_methods'] = [
  'id',
  'label',
  'bundle',
  'get',
  '__toString',
  'toString',
  'referencedEntities',
];

जहाँ 'referencedEntities' वह मेथड है जिसे आप अपने टेम्पलेट में उपयोग करना चाहते हैं।