जवाबों:
मुझे लगता है कि आपको $entity
एक सरणी में बदलने की आवश्यकता नहीं है , यह बस काम करेगा।
$entity->get('field_name')->getValue();
FYI करें: मॉड्यूल का उपयोग करने kint()
से devel_kint
आपको उन सभी उपलब्ध विधियों का पता चल सकेगा, जिनका उपयोग वस्तु तत्वों तक पहुंचने के लिए किया जा सकता है, इसलिए तुलनात्मक रूप var_dump()
से कम मददगार है।
getValue()
मेरे लिए काम करता है (दोनों 8.1.x और 8.2.x पर) आपी संदर्भ देखें
->getValue()
सामान्य है और क्षेत्र प्रकार की परवाह किए बिना काम करेगा। यदि आप उपयोग करते हैं ->value
, तो यह केवल तभी काम करता है जब फ़ील्ड मान किसी value
संपत्ति में संग्रहीत किया जाता है । यह अधिक जटिल प्रकारों (जैसे दिनांक या इकाई संदर्भ) के लिए काम नहीं करेगा।
Drupal 8 में, $ नोड क्लास नोड का है
$node->field_machine_name->getValue();
या
$node->get('field_machine_name')->getValue();
मानों की एक सरणी लौटाएगा।
यदि आप केवल एक की उम्मीद करते हैं, तो आप इसके साथ सरणी को भी सख्त कर सकते हैं
$node->field_machine_name->getString();
या
$node->get('field_machine_name')->getString();
खेतों के लिए आप $node->body->value
उदाहरण के लिए उपयोग करने में सक्षम होना चाहिए । यदि आप यह नहीं जानते हैं कि क्षेत्र के नाम क्या हैं, तो मैं ड्रुपल 8 के लिए डेवेल मॉड्यूल को स्थापित करने और नोड का निरीक्षण करने की सलाह देता हूं dsm($node)
।
आप हमेशा $entity->toArray()
देख सकते हैं कि एक इकाई में क्या है। यहां तक कि जब xdebug का उपयोग करते हैं (उदाहरण के लिए phpstorm के साथ) अपने आप पर एक इकाई वस्तु की भावना बनाना बहुत कठिन है। मुझे dsm($node)
ड्रुपल 8 में कोई भी संदेह है। यदि आप इन-ब्राउज़र डिबगिंग पर जोर देते हैं (लेकिन आपको ऐसा नहीं करना चाहिए, तो Drupal 8 xdebug के बिना डिबग करने के लिए बहुत जटिल है) dsm($node->toArray())
जो आप चाहते हैं।
नोड फ़ील्ड मान प्राप्त करने के लिए निम्न कोड स्निपेट का उपयोग करें
इसका उपयोग url से नोड आईडी प्राप्त करने के लिए किया जाता है
$nid = \Drupal::routeMatch()->getRawParameter($node_id);
Nid का उपयोग करके नोड डेटा लोड करने के लिए
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
इसका उपयोग फ़ील्ड मान प्राप्त करने के लिए किया जाता है।
$terms = $node->get('field_Name')->getValue();
इसका उपयोग नोड शीर्षक प्राप्त करने के लिए किया जाता है।
$product_name = $node->getTitle();
मेरे लिए, $entity
(नोड) यह काम कर रहा है:
$entity->field_name->getValue();
8.1 का उपयोग करना।
use Drupal\node\Entity\Node
$node = Node::load($nid);
$title = $node->get('title')->value;
या
use Drupal\node\Entity\Node
$title = Node::load($nid)->get('title')->value;
यहाँ नोड वस्तु से मूल्यों पहुँचने के बारे में अच्छा लिखने निर्भर है https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
यह बस है:
$node->get('field_name')->getValue()
यदि फ़ील्ड एक इकाई संदर्भ फ़ील्ड है, तो संदर्भित संस्थाओं को प्राप्त करने के लिए कुछ विशेष तरीके हैं।
लक्ष्य आईडी पाने के लिए (पहला तत्व):
$entity->get('field_entity_reference')->target_id
भरी हुई इकाई (पहला तत्व) पाने के लिए:
$entity->get('field_entity_reference')->entity
->entity
फ़ील्ड पर उपयोग करते समय यह स्वचालित रूप से इकाई को लोड करता है।
यदि फ़ील्ड में कई संदर्भ हो सकते हैं, तो आप उन्हें इस तरह से ला सकते हैं:
$entities = $entity->get('field_entity_reference')->referencedEntities();
यह आपको संस्थाओं की एक सरणी देगा।