logo

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

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

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

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

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

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

स्क्रॉल
30/09/2025, by Ivan

Menu

सामान्य एंटिटी API methods को कवर करता है

  • Entity::create()
  • Entity::load()
  • Entity::save()
  • Entity::id()
  • Entity::bundle()
  • Entity::isNew()
  • Entity::label()

अधिक विशिष्ट APIs को अलग अध्यायों में कवर किया जाएगा।

जाँच करें

// यह सुनिश्चित करें कि object एक entity है।
if ($entity instanceof \Drupal\Core\Entity\EntityInterface) {
}

// यह सुनिश्चित करें कि यह एक content entity है।
if ($entity instanceof \Drupal\Core\Entity\ContentEntityInterface) {
}
// या:
if ($entity->getEntityType()->getGroup() == 'content') {
}

// entity type या entity type ID प्राप्त करें।
$entity->getEntityType();
$entity->getEntityTypeId();

// यह सुनिश्चित करें कि यह node है।
if ($entity instanceof \Drupal\node\NodeInterface) {
}

entity से जानकारी प्राप्त करना / Entity methods

entity object से जानकारी प्राप्त करने के लिए कई सामान्य methods उपलब्ध हैं, जैसे कि id, bundle, revision id आदि। विवरण के लिए देखें EntityInterface

// ID प्राप्त करें।
$entity->id();

// bundle प्राप्त करें।
$entity->bundle();

// जाँचें कि entity नई है या नहीं।
$entity->isNew();

// entity का लेबल प्राप्त करें। entity_label() का विकल्प।
$entity->label();

// entity के लिए URL object प्राप्त करें।
$entity->toUrl();

// entity के लिए internal path, path alias यदि मौजूद हो।
$entity->toUrl()->toString();

// डुप्लिकेट बनाएं जिसे नई entity के रूप में सेव किया जा सके।
$duplicate = $entity->createDuplicate();

entity बनाना

// यदि आप entity class जानते हैं तो static create() method का उपयोग करें।
$node = Node::create([
  'type' => 'article',
  'title' => 'The node title',
]);

// entity type manager का उपयोग करें (अनुशंसित)।
$node = \Drupal::entityTypeManager()->getStorage('node')->create(['type' => 'article', 'title' => 'Another node']);

// या procedural wrapper का उपयोग करें (deprecated)।
$node = entity_create('node', [
  'title' => 'My node',
  'body' => 'The body content. यह Entity Field API के कारण इस तरह काम करता है।
          यह default language में पहले field item के value के रूप में assign होगा।',
]);

field type annotation से default settings केवल तभी जोड़ी जाती हैं जब top-level keys गायब हों; deep merge नहीं किया जाता।

object-oriented code में static method Entity::create() का उपयोग करने से बचें। इसके बजाय dependency injection का उपयोग करें ताकि entity type manager inject हो सके और entity इस प्रकार बनाई जाए: $this->entityTypeManager->getStorage($entity_type)->create()। यह सुनिश्चित करता है कि code सही तरीके से अलग हो और module द्वारा परीक्षण किया जा सके।

IDE में detection के लिए आप entity storage interface को एक property में assign कर सकते हैं। उदाहरण: $this->nodeStorage = $this->entityTypeManager->getStorage('node'); फिर entity बनाने के लिए आप $this->nodeStorage->create() का उपयोग कर सकते हैं।

लोड करना

// static method का उपयोग करें
$node = Node::load(1);

// Deprecated. Dynamic entity type, अब entity_load() केवल एक entity लोड करता है,
// Drupal 7.x का entity_load() अब entity_load_multiple() कहलाता है।
$entity = entity_load($entity_type, $id);

// storage controller का उपयोग करें (अनुशंसित)।
$entity = \Drupal::entityTypeManager()->getStorage($entity_type)->load(1);

// कई entities लोड करें, entity_load_multiple() भी मौजूद है।
$entities = \Drupal::entityTypeManager()->getStorage($entity_type)->loadMultiple([1, 2, 3]);

// property values के आधार पर entities लोड करें।
$entities = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties(['type' => 'article']);

object को अपडेट करने के लिए, उसे लोड करें और फिर बदलावों के साथ सेव करें।

object-oriented code में static method Entity::load() का उपयोग करने से बचें। इसके बजाय dependency injection का उपयोग करें ताकि entity type manager inject हो सके और entity इस प्रकार लोड हो: $this->entityTypeManager->getStorage($entity_type)->load($entity_id)

entity सेव करना

// entity को सेव करने के लिए।
$entity->save();

यह नई और मौजूदा दोनों entities के लिए काम करता है, entity स्वयं ट्रैक करती है कि वह नई है या नहीं। डिफ़ॉल्ट रूप से content entities के लिए यह इस पर निर्भर करता है कि उसके पास ID है या नहीं। किसी object को ID के साथ नए object के रूप में सेव करने के लिए (जैसे कि import करते समय), आप isNew flag लागू कर सकते हैं।

// यह ID 5 के साथ एक नया node insert करने का प्रयास करेगा, यह तब फेल होगा यदि वह node पहले से मौजूद है।
$node->nid->value = 5;
$node->enforceIsNew(TRUE);
$node->save();

entity हटाना

// एक entity हटाएँ।
$entity = \Drupal::entityTypeManager()->getStorage('node')->load(1);
$entity->delete();

// कई entities को एक साथ हटाएँ।
\Drupal::entityTypeManager()->getStorage($entity_type)->delete([$id1 => $entity1, $id2 => $entity2]);

एक्सेस कंट्रोल

access() method का उपयोग यह जाँचने के लिए किया जा सकता है कि कौन entity पर कौन-सी कार्रवाई कर सकता है। यह method विभिन्न operations को सपोर्ट करता है। standard operations हैं – view, update, delete और create। create थोड़ा विशेष है, देखें नीचे।

access checks को access controller पर पास किया जाता है। (TODO: लिंक जोड़ें)

// entity का view access जाँचें।
// डिफ़ॉल्ट रूप से यह वर्तमान लॉगिन user के लिए access जाँचता है।
if ($entity->access('view')) {

}

// जाँचें कि कोई दिया गया user entity को delete कर सकता है या नहीं।
if ($entity->access('delete', $account)) {

}

create access जाँचते समय आमतौर पर entity मौजूद नहीं होती। केवल यह जाँचने के लिए कि कोई उसे बना सकता है या नहीं, एक entity बनाना महँगा होता है। इसलिए create access को सीधे access controller पर जाँचना चाहिए।

\Drupal::entityTypeManager()->getAccessControlHandler('node')->createAccess('article');

यदि entity पहले से मौजूद है, तो $entity->access('create') भी काम करता है, जो बस createAccess() method को redirect करता है, जैसे कि अन्य operations access() method को access controller पर redirect करते हैं।

नोट: कुछ ऑनलाइन गाइड्स \Drupal::entityManager() का उपयोग करती हैं, लेकिन यह 8.x में deprecated है और 9.x में हटा दिया जाएगा। इसलिए आप \Drupal::entityTypeManager() का उपयोग कर सकते हैं।