ฉันพบหลายบทความพร้อมคำถามเดียวกันนี้ แต่คำตอบมักจะแตกต่างจากหัวข้ออื่น ๆ ไม่เช่นนั้นจะไม่ได้ผลสำหรับความต้องการของฉัน
หลังจากบันทึกโหนดฉันต้องการให้โมดูลที่กำหนดเองของฉันแทรกแถวลงในหนึ่งในตารางที่กำหนดเองซึ่งมี nid ของโหนดใหม่ เมื่อhook_node_submit
มีการเรียก nid ยังไม่มีอยู่ hook_node_insert
มี nid แต่ถูกเรียกเพียงครั้งแรกที่โหนดถูกบันทึก แต่ฉันอาจต้องดำเนินการทุกครั้งที่มีการบันทึกโหนด
แผนของฉันคือการแยกการทำงานของฉันออกเป็นวิธีการของตัวเองและใช้ทั้งสอง hooks แต่ฉันพยายามเรียนรู้ที่จะทำสิ่งต่าง ๆ กับ Drupal อย่างเหมาะสมดังนั้นฉันจึงสงสัยว่ามีตะขอที่ตรงกับความต้องการของฉันหรือไม่
มีตะขอซึ่งเรียกว่าทุกครั้งที่มีการบันทึกโหนดและเรียกว่าหลังจากการบันทึกเสร็จสมบูรณ์หรือไม่
hook_node_submit
แต่ไม่ใช่hook_node_update
เหรอ?
hook_node_insert
hook_node_update
hook_node_insert()
และhook_node_update()
เป็น hooks ที่ถูกต้องสำหรับสิ่งนี้hook_node_submit()
ถูกเรียกใช้ในระหว่างกระบวนการส่งแบบฟอร์มก่อนที่จะบันทึกโหนด อย่าลืมว่าคุณต้องล้างแคชเมื่อใดก็ตามที่คุณเพิ่ม / เอาตะขอออก
hook_node_insert
และhook_node_update
(ทำหน้าที่ทุกครั้งที่มีการบันทึกโหนด)