it-swarm.asia

كيف يمكنني الوصول إلى قيمة حقل لكائن (مثل العقدة)؟

node_load((int) $nid) يقوم بتحميل كيان عقدة مملوء بالكامل. $node->title->value يحصل على العنوان ، ولكن كيف يمكنني الوصول إلى قيم الحقول في Drupal 8؟

62
dbj44

أعتقد أنك لست بحاجة إلى تحويل $entity إلى مصفوفة ، فهذا سيعمل ببساطة.

$entity->get('field_name')->getValue();

لمعلوماتك: استخدام kint() من وحدة devel_kint سيتيح لك معرفة جميع الطرق المتاحة التي يمكن استخدامها للوصول إلى عناصر الكائن ، لذا فإن var_dump() أقل فائدة.

95
Ashkar A.Rahman

في drupal 8 ، عقدة $ من عقدة فئة

 $node->field_machine_name->getValue();

أو

$node->get('field_machine_name')->getValue();

سيعرض مجموعة من القيم.

إذا كنت تتوقع واحدًا فقط ، يمكنك أيضًا ضبط الصفيف باستخدام

$node->field_machine_name->getString();

أو

 $node->get('field_machine_name')->getString();
58
Matoeil

بالنسبة للحقول ، يجب أن تكون قادرًا على استخدام $node->body->value على سبيل المثال. إذا كنت لا تعرف ما هي أسماء الحقول التي أوصي بتثبيت Devel الوحدة النمطية Drupal 8 وفحص العقدة عبر مثل dsm($node).

35
tenken

يمكنك دائمًا إجراء $entity->toArray() لمعرفة ما هو موجود في الكيان. حتى عند استخدام xdebug (على سبيل المثال مع phpstorm) فإن فهم كائن كيان بمفرده أمر صعب للغاية. أشك في dsm($node) في Drupal 8 منطقي. إذا كنت تصر على تصحيح الأخطاء في المتصفح (ولكن لا يجب عليك ، Drupal 8 معقد للغاية بحيث لا يمكن تصحيحه بدون xdebug) dsm($node->toArray()) هو ما تريده.

17
user49

استخدم مقتطف الشفرة التالي للحصول على قيم حقل العقدة

يستخدم هذا للحصول على معرف العقدة من 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();
14
Swapnil Bijwe

بالنسبة لي ، الحصول على $entity (عقدة) نجح هذا:

$entity->field_name->getValue();

باستخدام 8.1.

7
Alex

أثناء استخدام (الطريقة الصحيحة الفعلية):

$node = \Drupal\node\Entity\Node::load($nid);
$node->get('nid')->value; // returns a raw value - Node ID

// Following both returns array structure containing value/target id nested value.
$node->get('nid')->value(); 
$node->nid->getValue();
6
Francis

إنه ببساطة:

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

سيؤدي ذلك إلى إرجاع مجموعة من الكيانات.

6
user72672
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

5
pwaterz