Score:0

เพิ่มค่าโดยทางโปรแกรมให้กับฟิลด์หลายค่า/ตัวทวนที่น้ำหนัก/ดัชนี

ธง cn

ใน Drupal 8 ฉันมีประเภทเนื้อหาและโหนดมากกว่าสองสามโหนดที่มีฟิลด์ย่อหน้าที่มีค่าไม่จำกัดจำนวน ดังนั้นฉันจึงต้องเพิ่มย่อหน้าที่ดัชนีให้กับค่าที่มีอยู่ในฟิลด์โดยทางโปรแกรม ฉันรู้ว่าในวิดเจ็ตตัวแก้ไขฟอร์มฉันสามารถเพิ่มค่าฟิลด์แล้วลากฟิลด์ไปยังลำดับที่ต้องการ หรือเปลี่ยนน้ำหนักแล้วบันทึกเนื้อหา

ฉันกำลังโหลดโหนดและเพิ่มค่าดังกล่าว

    $paragraph_node = ย่อหน้า::create($fields);
    $paragraph_node->save();

    $node = Node::load($nid);

    $node->field_paragraph_repeater->ผนวกรายการ(
      [
        'target_id' => $paragraph_node->id(),
        'target_revision_id' => $paragraph_node->getRevisionId(),
      ]
    );

    $node->save();

แต่นี่เป็นเพียงการเพิ่มมูลค่าในตอนท้าย ฉันจะเพิ่มสิ่งนี้ด้วยน้ำหนักได้อย่างไร

Score:0
ธง in

คุณสามารถรับค่าฟิลด์เป็นอาร์เรย์แล้วใช้ array_splice เพื่อแทรกค่าใหม่ของคุณในตำแหน่งที่คุณต้องการ ดู แทรกรายการใหม่ในอาร์เรย์ในตำแหน่งใดก็ได้ใน PHP.

$values ​​= $node->get('field_paragraph_repeater')->getValue();
$ส่วนเพิ่ม = [
  'target_id' => $paragraph_node->id(),
  'target_revision_id' => $paragraph_node->getRevisionId(),
];
$addition_index = 3;

// ใส่ค่าใหม่ลงในอาร์เรย์ $values
array_splice($values, $addition_index, 0, [$addition]);

// ตั้งค่าบนโหนดของคุณและบันทึก
$node->set('field_paragraph_repeater', $values);
$node->save();

โพสต์คำตอบ

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