নোড অবজেক্টে অনুচ্ছেদ সত্তা কীভাবে লোড করবেন?


12

আমি আমার সামগ্রীর ধরণে অনুচ্ছেদ ব্যবহার করছি। আমি একটি অনুচ্ছেদ টাইপ তৈরি করেছি এবং সামগ্রী যুক্ত করেছি। এখন আমি একটিতে অনুচ্ছেদগুলি লোড করতে চাই foreach। কিন্তু কিছুই দেখাচ্ছে না। $parasখালি:

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

আপনি বলেছেন $ পার্স ফাঁকা দেখাচ্ছে। তবে আপনি এটির মূল্য কীভাবে মুদ্রণ করেছিলেন তা আপনি দেখান নি। এটি একটি NULLমান, একটি খালি স্ট্রিং, বা একটি খালি অ্যারে? যেহেতু আপনি মন্তব্য করেছেন আমি ইতিমধ্যে এটি করেছি তবে আপনার উত্তর উত্তরের সাথে সঠিক , যা সম্পূর্ণ ভিন্ন কোড দেখাচ্ছে, আপনার প্রশ্নটি কিছুটা বিভ্রান্ত হয়ে পড়ে এবং আপনি কী অর্জন করতে পারছেন না তা পরিষ্কার নয়।
কিমলালুনো

এই প্রশ্নটি জিজ্ঞাসা করা হয়েছিল যখন আমি শিখার জন্য ড্রুপাল 8 টাস্কে খুব নতুন আছি I আমি মনে করি প্রক্রিয়াটিতে আমি কিছু ত্রুটি করি যাতে সময়টি ফাঁকা দেখা যায় ut তবে আমি এখন যখন এটি করি ঠিকঠাক কাজ করে। আপনি এখানে একটি ডেমো চালানো একই কোড পরীক্ষা করে দেখুন। আমি কেবল এটি আপনার জন্য তৈরি করেছি, 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

অনুচ্ছেদ :: লোড (id জোয়ার) এর পরিবর্তে আমাদের এখন rup দ্রুপাল :: অ্যান্টিম্যাঞ্জার () -> গেটসটোরেজ ('অনুচ্ছেদ') -> লোড (id জোয়ার) ব্যবহার করা উচিত।
জেএফ কিওয়াদ

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()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.