Score:-1

ฉันจะเข้าถึงค่าที่ได้รับการป้องกันของโหนดเอนทิตีได้อย่างไร

ธง in

ฉันมีโหนดมุมมองและฉันใช้รหัสด้านล่างเพื่อ Kint out โหนดวัตถุ:

$node = \Drupal::entityTypeManager()
      ->getStorage('โหนด')
      ->โหลดหลายรายการ();
 dpm($โหนด);

ส่งคืนผลลัพธ์ด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้เห็นคุณสมบัติของแต่ละโหนด ในกรณีนี้ ฉันต้องการเข้าถึง target_id/value ของฟิลด์ที่ไฮไลต์ - field_cp_level2_ref_level3 ฉันลองบรรทัดด้านล่างแล้วมันออกมาเป็นโมฆะ:

$node->field_cp_level2_ref_level3->target_id

วิธีเข้าถึงค่าฟิลด์นี้

miststudent2011 avatar
fr flag
Does this answer your question? [8 - Node::load is generating an object with circular reference which is crashing kint() and var\_export()](https://drupal.stackexchange.com/questions/200046/8-nodeload-is-generating-an-object-with-circular-reference-which-is-crashing)
miststudent2011 avatar
fr flag
When you want to dump it, just use $node->toArray() , Refer https://drupal.stackexchange.com/a/200118/71454
in flag
@misstudent2011 ฉันไม่ได้บอกว่าหน้าของฉันล่มเนื่องจากการอ้างอิงแบบวนซ้ำ ฉันแค่ถามวิธีเข้าถึงค่าที่ได้รับการป้องกัน คำถามที่คุณอ้างถึงไม่ได้ช่วยฉัน
miststudent2011 avatar
fr flag
คุณอ่านคำตอบในลิงก์ที่ฉันแชร์แล้วหรือยัง ช่วยให้คุณได้รับค่าที่ได้รับการป้องกัน ดูเหมือนว่าคุณกำลังมีปัญหาในการรับมัน ให้ฉันวางมันเป็นความคิดเห็น
miststudent2011 avatar
fr flag
เมื่อต้องการดัมพ์ เพียงใช้ `$node->toArray()` จากนั้นคุณจะได้อาร์เรย์ที่มีค่าธรรมดาคุณสามารถใช้ชื่อฟิลด์และคุณสมบัติเหล่านั้นอีกครั้งเพื่อเข้าถึงค่าบนโหนดวัตถุ เช่น `$node->yourfield->value.`
in flag
ขอบคุณ @miststudent2011 แต่การทำ $node->toArray ส่งคืนข้อผิดพลาดด้านล่าง: "Error: Call to a member function toArray() on array" ยังทำ $node->yourfield->value คืนค่า null :(
Score:0
ธง bd

ปัญหาของคุณคือคุณคิดผิดเกี่ยวกับผลลัพธ์ของ โหลดหลายรายการ เป็นวัตถุโหนด เมื่อส่งคืนอาร์เรย์ของวัตถุโหนดแทน

คุณควรจะทำสิ่งนี้ได้:

$nodes = \Drupal::entityTypeManager()
  ->getStorage('โหนด')
  ->โหลดหลายรายการ();
$node = รีเซ็ต($nodes);

ตอนนี้คุณควรจะสามารถเข้าถึงค่าที่คุณเห็นในเอาต์พุตดีบั๊กของคุณ:

$node->field_cp_level2_ref_level3->target_id;

เป็นเรื่องน่าสงสัยเล็กน้อยในการโหลดโหนดทั้งหมดที่คุณมีในระบบของคุณ นั่นอาจยังใช้ได้กับโหนด 294 โหนดของคุณ แต่จะสร้างปัญหาในไซต์ที่มีเนื้อหามากกว่า คุณควรเพิ่มเงื่อนไขแทน เช่น โดยใช้ loadByProperties บนที่เก็บข้อมูลโหนด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา