উত্তর:
আমার ধারণা আপনার $entity
কোনও অ্যারেতে রূপান্তর করার দরকার নেই , এটি কেবল কার্যকর হবে।
$entity->get('field_name')->getValue();
অবগতির জন্য: ব্যবহার kint()
থেকে devel_kint
মডিউল উপলব্ধ সমস্ত পদ্ধতি যে বস্তুর উপাদান অ্যাক্সেস করতে ব্যবহার করা যেতে পারে জানি, তাই তুলনামূলকভাবে দেওয়া হবে var_dump()
কম সহায়ক।
getValue()
আমার জন্য কাজ করে (8.1.x এবং 8.2.x উভয়) এপিআই রেফারেন্স দেখুন
->getValue()
জেনেরিক এবং ক্ষেত্রের ধরণ নির্বিশেষে কাজ করবে। আপনি যদি ব্যবহার ->value
করেন তবে ক্ষেত্রের মান কোনও value
সম্পত্তিতে সংরক্ষণ করা হলে এটি কেবল কাজ করে । এটি আরও জটিল ধরণের জন্য কাজ করবে না (যেমন: তারিখ বা সত্তার রেফারেন্স)।
ড্রুপাল 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 এ সন্দেহ করি যে কোনও ধারণা দেয়। যদি আপনি ইন-ব্রাউজার ডিবাগিংয়ের জন্য জেদ করেন (তবে আপনার হওয়া উচিত নয়, দ্রুপাল 8 এক্সডিবিগ ছাড়াই ডিবাগ করা খুব জটিল) dsm($node->toArray())
আপনি যা চান তা হ'ল ।
নোড ফিল্ডের মানগুলি পেতে নিম্নলিখিত কোড স্নিপেট ব্যবহার করুন
এটি ইউআরএল থেকে নোড আইডি পেতে ব্যবহৃত হয়
$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();
এটি আপনাকে সত্ত্বার একটি অ্যারে দেবে।