फ़िल्टर्स — Twig टेम्पलेट्स में वेरिएबल्स को बदलना
Twig में फ़िल्टर्स का उपयोग वेरिएबल्स को बदलने के लिए किया जा सकता है। फ़िल्टर को वेरिएबल से पाइप (|) सिंबल द्वारा अलग किया जाता है। इनके साथ वैकल्पिक आर्ग्युमेंट्स भी हो सकते हैं। कई फ़िल्टर्स को एक साथ चेन किया जा सकता है। एक फ़िल्टर का आउटपुट अगले फ़िल्टर के इनपुट के रूप में उपयोग होता है।
उदाहरण:
{{ content|safe_join(", ")|lower }}
कभी-कभी आपको फ़िल्टर लगाने से पहले किसी एलिमेंट को render करना पड़ सकता है:
{{ item|render|filter }}
Twig में बहुत से बिल्ट-इन फ़िल्टर्स आते हैं, जिन्हें आप उनकी आधिकारिक डाक्यूमेंटेशन में देख सकते हैं। Drupal के पास भी अपने कई विशेष फ़िल्टर्स हैं।
Drupal के विशेष फ़िल्टर्स
ये TwigExtension::getFilters() में घोषित होते हैं।
अनुवाद (Translation) फ़िल्टर्स
trans
यह फ़िल्टर (या t) वेरिएबल को Drupal की t() फ़ंक्शन के माध्यम से चलाता है, और अनुवादित स्ट्रिंग लौटाता है। इस फ़िल्टर का उपयोग उन सभी इंटरफ़ेस स्ट्रिंग्स के लिए किया जाना चाहिए जिन्हें टेम्पलेट में सीधे लिखा गया है और जो उपयोगकर्ताओं को दिखाई देंगी।
उदाहरण:
<a href="{{ url('<front>') }}" title="{{ 'Home'|t }}" rel="home" class="site-logo"></a>
placeholder
यह फ़िल्टर कंटेंट को HTML में एस्केप करता है और drupal_placeholder() का उपयोग करके उसे फॉर्मेट करता है, ताकि टेक्स्ट को हाइलाइट करके दिखाया जा सके।
उदाहरण:
{% trans %}Submitted on {{ date|placeholder }}{% endtrans %}
Unsafe translation (असुरक्षित अनुवाद)
कुछ टेम्पलेट्स असुरक्षित होते हैं और उनका उपयोग नहीं करना चाहिए, क्योंकि वे वेरिएबल को सीधे अनुवाद में पास कर देते हैं। यह न केवल अनुवाद स्ट्रिंग्स की सूची को बेवजह बड़ा कर देता है, बल्कि सुरक्षा जोखिम भी हो सकता है, खासकर यदि आउटपुट उपयोगकर्ता इनपुट से आता है। गलत उदाहरण:
{# ऐसा न करें #}
{{ var1|t }}
{{ var1|placeholder }}
{% trans %}{{ var1 }}{% endtrans %}
अन्य उपयोगी फ़िल्टर्स
clean_class
यह फ़िल्टर किसी स्ट्रिंग को HTML क्लास नाम के रूप में मान्य बनाने के लिए तैयार करता है। देखें Html::getClass()
clean_id
यह फ़िल्टर किसी स्ट्रिंग को HTML ID के रूप में मान्य बनाने के लिए तैयार करता है। देखें Html::getId()
format_date
यह फ़िल्टर किसी timestamp को फ़ॉर्मेट की हुई तारीख की स्ट्रिंग में बदल देता है। देखें DateFormatter::format()
raw
जहाँ तक संभव हो, इस फ़िल्टर से बचना चाहिए, खासकर जब आउटपुट उपयोगकर्ता द्वारा डाला गया हो। और जानकारी के लिए देखें यह पेज।
render
यह फ़िल्टर render() फ़ंक्शन का रैपर है। यह render array लेता है और HTML मार्कअप लौटाता है। यह तब उपयोगी होता है जब आप किसी अतिरिक्त फ़िल्टर (जैसे टैग पार्सिंग) को लागू करना चाहें या आउटपुट के आधार पर कोई शर्त लगाना चाहें। यह स्ट्रिंग्स और उन ऑब्जेक्ट्स पर भी काम करता है, जिनमें toString() मेथड लागू है।
safe_join
यह फ़िल्टर कई स्ट्रिंग्स को एक साथ जोड़ता है, दिए गए सेपरेटर के साथ। देखें TwigExtension::safeJoin().
उदाहरण:
{{ items|safe_join(', ') }}
यह items वेरिएबल में मौजूद हर स्ट्रिंग को जोड़कर एक आउटपुट देगा, जिसमें प्रत्येक एलिमेंट कॉमा से अलग होगा।
without
without फ़िल्टर render array की कॉपी बनाता है और दिए गए keys वाले child elements को हटा देता है। मूल render array उपलब्ध रहता है और Twig टेम्पलेट में पूरे कंटेंट को प्रिंट करने के लिए उपयोग किया जा सकता है। देखें twig_without.
उदाहरण:
{{ content|without('links') }}
यह content वेरिएबल में सब कुछ दिखाएगा, सिवाय content.links के।
{{ content|without('links', 'field_some_data') }}
यह उदाहरण दो आइटम्स को exclude करता है: «links» और «field_some_data»।