logo

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

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

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

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

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

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

स्क्रॉल

एक्सेस जाँच + कैश करने योग्यता

03/10/2025, by Ivan

Мар्ग एक्सेस चेकर, hook_entity_access() और वे सब कुछ, जिन्हें AccessResultInterface ऑब्जेक्ट लौटाने की आवश्यकता होती है, उन्हें उपयुक्त कैश करने योग्य मेटाडेटा जोड़ना चाहिए।

अगर आपने अभी तक नहीं पढ़ा है, तो cache tagscache contexts और max-age पढ़ें।

एक्सेस चेक पैरामीटर

एक्सेस चेकर को विभिन्न पैरामीटर मिलेंगे — कम से कम एक उपयोगकर्ता खाता (AccountInterface) और अक्सर एक ऑब्जेक्ट। फिर यह उन पैरामीटरों के गुणों के आधार पर निर्णय लेगा।

यदि किसी पैरामीटर की किसी प्रॉपर्टी में बदलाव एक्सेस परिणाम को बदल देता है, तो उस $parameter को कैश करने योग्य निर्भरता के रूप में जोड़ा जाना चाहिए।

उदाहरण:

$access_result = AccessResult::allowedIf($node->isPublished())
  // एक्सेस परिणाम ऑब्जेक्ट की प्रॉपर्टी पर निर्भर करता है जो बदल सकती है: यह एक कैश करने योग्य निर्भरता है।
  ->addCacheableDependency($node);

एक और आम स्थिति तब होती है जब एक्सेस परिणाम उस प्रॉपर्टी पर निर्भर करता है जो कभी नहीं बदल सकती (आमतौर पर ID, UUID)। उदाहरण के लिए, एक्सेस की अनुमति दें यदि दिया गया यूजर अकाउंट उस ऑब्जेक्ट का ओनर है:

$access_result = AccessResult::allowedIf($node->getOwnerId() === $account->id())
  // एक्सेस परिणाम नोड के ओनर पर निर्भर करता है, और ओनर बदल सकता है।
  ->addCacheableDependency($node);

// एक्सेस परिणाम यूजर अकाउंट पर भी निर्भर करता है, और यूजर अकाउंट की ID कभी नहीं बदल सकती। 
// इसलिए हमें $account को कैश करने योग्य निर्भरता के रूप में जोड़ने की ज़रूरत नहीं है।

// लेकिन अगर $account वर्तमान यूजर है, और कोई हार्डकोडेड यूजर नहीं है, तो हमें यह सुनिश्चित करना होगा कि यह वर्तमान यूजर के हिसाब से वेराई करे, 
// ताकि हम इस एक्सेस चेक को एक बार न चलाएँ और फिर सभी यूजरों के लिए उसका परिणाम न इस्तेमाल करें।
if ($account->id() === \Drupal::currentUser()->id()) {
  $access_result->cachePerUser();
}