Score:1

วิธีการขอให้ลบย่อหน้า?

ธง br

ฉันใช้ D9 และฉันย่อหน้าในโหนดประเภทเนื้อหา

ฉันต้องขอเมื่อย่อหน้าถูกลบเพื่อทำตรรกะที่กำหนดเองและตั้งค่าคิว

ฉันพยายามแล้ว hook_entity_delete, hook_entity_predelete หรือ hook_paragraph_delete, hook_paragraph_predelete: hooks เหล่านั้นทำงานระหว่าง cron หากโหนดที่มีย่อหน้าถูกลบ

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

มีวิธีสกัดกั้นกรณีนั้น / แก้ปัญหาของฉันหรือไม่?

berramou avatar
gb flag
เมื่อคุณลบย่อหน้าออกจากเนื้อหา คุณจะลบการอ้างอิง ไม่ใช่รายการย่อหน้า ดังนั้นจึงเป็นเรื่องปกติที่จะไม่มีการเรียกใช้ hook เหล่านั้น
Giuseppe avatar
br flag
@berramou จริง แต่ฉันคาดว่าพวกเขาจะเรียกใช้ระหว่าง cron เพราะฉันคิดว่าย่อหน้าที่ไม่มีการอ้างอิงถูกลบ อย่างไรก็ตาม หลังจากตรวจสอบ DB อย่างมีประสิทธิภาพแล้ว ดูเหมือนว่าจะไม่ถูกลบ
Score:6
ธง cn

คุณต้องใช้ hook update node และเปรียบเทียบ ID ของย่อหน้า:

ใช้ Drupal\node\Entity\NodeInterface;

/**
 * ใช้ hook_ENTITY_TYPE_update() สำหรับเอนทิตีโหนด
 */
ฟังก์ชัน mymodule_node_update (NodeInterface $node) {
  ถ้า ($node->getType() == 'my_content_type') {
    $ids = array_column($node->field_paragraph->getValue(), 'target_id');
    $original_ids = array_column($node->original->field_paragraph->getValue(), 'target_id');
    // เปรียบเทียบรหัส
  }
}

หากนี่คือย่อหน้าที่ซ้อนกัน ให้ใช้ hook_paragraph_update() สำหรับประเภทย่อหน้าหลัก

โพสต์คำตอบ

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