नोड ऑब्जेक्ट पर पैराग्राफ इकाई कैसे लोड करें?


12

मैं अपने सामग्री प्रकार में पैराग्राफ का उपयोग कर रहा हूं। मैंने एक पैराग्राफ प्रकार और अतिरिक्त सामग्री बनाई है। अब मैं पैराग्राफ को एक में लोड करना चाहता हूं foreach। लेकिन कुछ भी नहीं दिखा रहा है। $parasखाली है:

$node  = \Drupal\node\Entity\Node::load(1);
$paras = $node->get('field_paragraph')->referencedEntities();

आपने कहा कि $ परस खाली दिखा। लेकिन आपने यह नहीं दिखाया कि आपने इसका मूल्य कैसे छापा। क्या यह एक NULLमान है, एक खाली स्ट्रिंग है, या एक खाली सरणी है? चूँकि आपने मेरे साथ पहले ही यह टिप्पणी कर दी थी, लेकिन आपका उत्तर सही है, जो कि पूरी तरह से अलग कोड दिखा रहा है, आपका प्रश्न थोड़ा उलझा हुआ है, और यह स्पष्ट नहीं है कि आप क्या हासिल करने में सक्षम हैं।
kiamlaluno

यह प्रश्न तब पूछा गया जब मैं सीखने के लिए ड्रुपल 8 में नया काम कर रहा हूं। मुझे लगता है कि मैं इस प्रक्रिया में कुछ त्रुटि करता हूं ताकि यह खाली दिखाई दे। लेकिन जब मैं ऐसा करता हूं तो यह ठीक काम कर रहा है। आप यहाँ एक डेमो रन एक ही कोड की जाँच करें। मैं सिर्फ आपके लिए इसे बनाता हूं, d2log.ply.st/devel/php उपयोगकर्ता नाम: व्यवस्थापक पासवर्ड :: व्यवस्थापक
पंकज योगी

जवाबों:


23
$paragraph = $node->field_paragraph->getValue();
// Loop through the result set.
foreach ( $paragraph as $element ) {
  $p = \Drupal\paragraphs\Entity\Paragraph::load( $element['target_id'] );
  $text = $p->field_name->getValue();
}

मैंने पहले ही ऐसा कर लिया है लेकिन आपका जवाब सही है।
पंकज योगी

सावधान रहें: इस समाधान में अनुवाद शामिल नहीं हैं।
ssibal

पैराग्राफ :: लोड ($ tid) के बजाय, हमें अब \ Drupal :: unitManager () -> getStorage ('पैराग्राफ') -> लोड ($ tid) का उपयोग करना चाहिए।
JF किवाड़

6

get()सीधे फ़ील्ड नाम से बदलें :

$node  = \Drupal\node\Entity\Node::load(1);
$paras = $node->field_paragraph->referencedEntities();

वाह, हाँ, लेकिन क्यों?
leymannx

0

यह विधि थोड़ी तेजी से काम करेगी।

// Get data from field.
if ($paragraph_field_items = $node->get('field_paragraph')->getValue()) {
  // Get storage. It very useful for loading a small number of objects.
  $paragraph_storage = \Drupal::entityTypeManager()->getStorage('paragraph');
  // Collect paragraph field's ids.
  $ids = array_column($paragraph_field_items, 'target_id');
  // Load all paragraph objects.
  $paragraphs_objects = $paragraph_storage->loadMultiple($ids);
  /** @var \Drupal\paragraphs\Entity\Paragraph $paragraph */
  foreach ($paragraphs_objects as $paragraph) {
    // Get field from the paragraph.
    $text = $paragraph->get('field_title')->value;
    // Do something with $text...
  }
}

आप इस कोड को अपनी कस्टम सेवा में किसी विधि में @entity_type.managerतर्क और नोड्स और पैराग्राफ के लिए लोड भंडारण के साथ आसानी से लागू कर सकते हैं __construct()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.