logo

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

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

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

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

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

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

स्क्रॉल

9.10.1. Drupal Fields API. फील्ड विजेट: डेटा इनपुट फील्ड्स, फील्ड के लिए फॉर्म।

17/10/2025, by Ivan

Menu

इस ट्यूटोरियल में हम देखेंगे कि Link मॉड्यूल का Field Widget कैसे काम करता है। यह एक समीक्षा लेख है, इसलिए यदि आप अपना Field Widget लिखना शुरू करना चाहते हैं, तो कृपया निम्नलिखित लेखों पर जाएं।

पिछले पाठ में हमने नोड्स और ब्लॉक्स के लिए Link फील्ड जोड़े थे। अब हम देखेंगे कि Link फील्ड का फॉर्म किस प्रकार से बनता है।

हम पहले ही Drupal में PHP क्लासेस के ऑटोलोडिंग से परिचित हो चुके हैं, और फील्ड्स के लिए एक WidgetBase फील्ड विजेट क्लास भी है:

core/lib/Drupal/Core/Field/WidgetBase.php

मॉड्यूल में एक नया चाइल्ड क्लास बनाकर और इसे src/Plugin/Field/FieldWidget में रखकर, यह क्लास स्वचालित रूप से कनेक्ट हो जाएगा और इसे फील्ड के लिए उपयोग किया जा सकेगा। आइए Link फील्ड के लिए विजेट क्लास देखें:

core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php

क्लास एनोटेशन में वह फील्ड टाइप होता है, जिस पर यह विजेट लागू हो सकता है:

/**
 * Plugin implementation of the 'link' widget.
 *
 * @FieldWidget(
 *   id = "link_default",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

इस तरह आप कस्टम मॉड्यूल में मौजूदा फील्ड्स के लिए नए फील्ड विजेट्स जोड़ सकते हैं।

अब हम formElement() मेथड पर चलते हैं, जो शायद सबसे महत्वपूर्ण विजेट मेथड में से एक है, जहां फॉर्म एलिमेंट्स को Form API के माध्यम से जोड़ा जाता है। Link विजेट में तीन एलिमेंट्स होते हैं:

$element['title']
$element['uri']
$element['attributes']
इन फील्ड्स का उपयोग नोड या ब्लॉक फॉर्म पर डेटा दर्ज करने के लिए किया जाएगा। इन फील्ड्स में वैलिडेशन भी जोड़ी जाती है क्योंकि, उदाहरण के लिए, URI फील्ड में सही URL या स्थानीय साइट पता होना चाहिए।

इसके अलावा, settingsForm() मेथड भी महत्वपूर्ण है, जो उस कस्टम फॉर्म को नियंत्रित करता है जिसे आप Manage form पेज पर देख सकते हैं:

link

फील्ड विजेट में सभी अन्य मेथड्स वैकल्पिक हैं। हम प्रत्येक मेथड के बारे में विस्तार से नहीं जाएंगे क्योंकि इन्हें कस्टम मॉड्यूल लिखने के लिए आवश्यक नहीं है। यदि आप कॉन्ट्रिब्यूटर मॉड्यूल लिखेंगे, तो मुझे लगता है कि आपको पेरेंट क्लास मेथड्स का विवरण पढ़ने में कोई कठिनाई नहीं होगी:

core/lib/Drupal/Core/Field/WidgetBase.php

फील्ड्स के लिए सभी Field Widgets प्रत्येक बंडल एंटिटी के लिए Manage form display टैब पर कॉन्फ़िगर किए जाते हैं:

manage form display