Score:0

ฉันจะตั้งค่าฟิลด์อ้างอิงเอนทิตีที่กำหนดเองของแฟล็กโดยทางโปรแกรมได้อย่างไรเมื่อตั้งค่าแฟล็กโดยทางโปรแกรม

ธง pe

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

  • เป็นฟิลด์อ้างอิงเอนทิตี (ไปยังโหนดอื่น)
  • ฉันต้องการตั้งค่าฟิลด์อ้างอิงเอนทิตีที่กำหนดเองของแฟล็กให้เป็นค่าเดียวกับ an ฟิลด์อ้างอิงเอนทิตีบนโหนดแฟล็ก

(สิ่งนี้อาจดูเหมือนเป็นเรื่องแปลกที่ต้องทำ อาจมีวิธีที่ดีกว่าในการบรรลุเป้าหมาย UX ฉันยังต้องการทราบวิธีการทำ)

'rf_tweaks' คือชื่อเครื่องโมดูล 'research_note' คือประเภทเนื้อหาของโหนด และ 'research_item' คือชื่อของแฟล็ก

ใช้ Drupal\node\Entity\Node;

ฟังก์ชัน rf_tweaks_node_insert (โหนด $node) {
  ถ้า ($node->bundle() == 'research_note'){
 $flag = \Drupal::entityTypeManager()->getStorage('flag')->load('research_item');
 \Drupal::service('flag')->flag($flag, $node);
}
}

มีข้อมูลดีๆ ที่ ตั้งค่าสถานะหน้า API แต่วิธีการต่างกันมากจนทำให้ฉันไม่ชัดเจนว่าจะปรับให้เข้ากับสถานการณ์นี้ได้อย่างไร

Score:1
ธง cn

เมธอดในโค้ดบรรทัดสุดท้ายส่งคืนเอนทิตี "แฟล็ก" ซึ่งแสดงถึงความสัมพันธ์เอนทิตี/แฟล็ก นั่นคือสิ่งที่คุณต้องตั้งค่าฟิลด์ เช่น.

$flag = \Drupal::entityTypeManager()->getStorage('flag')->load('research_item');
$flagging = \Drupal::service('flag')->flag($flag, $node);

$flagging->field_foo->target_id = $node->field_bar->target_id;
$ตั้งค่าสถานะ->บันทึก();

ซึ่งเกี่ยวข้องกับการบันทึกเอนทิตีแฟล็กสองครั้ง ดังนั้นหากประสิทธิภาพกลายเป็นปัญหา คุณอาจต้องสร้าง การตั้งค่าสถานะ เอนทิตีด้วยตนเองและบันทึกเพื่อหลีกเลี่ยงการตีสองครั้ง

pe flag
ทำงานให้ฉัน ชื่นชมมาก!
pe flag
ฉันเพิ่มโค้ดความคิดเห็นเพื่อพยายามทำความเข้าใจว่าเกิดอะไรขึ้น... เพื่อการศึกษาของฉันเองเป็นส่วนใหญ่ คำถามสองข้อ: 1. ฉันมีสิทธิ์ไหม 2. เราใช้ ->save() เพื่อเพิ่มค่าฟิลด์ แทนที่จะใช้บริการตั้งค่าสถานะ เนื่องจากการใช้บริการจะสร้างการตั้งค่าสถานะอื่นแทนการแก้ไขค่าสถานะปัจจุบัน

โพสต์คำตอบ

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