บางครั้งฉันต้องใช้ฟังก์ชันปิดเครื่อง นี่คือตัวอย่างที่โง่เขลา:
...
drupal_register_shutdown_function('display_message');
...
ฟังก์ชัน display_message() {
Drupal::messenger()->addMessage('สวัสดีชาวโลก');
}
เป็นไปได้ไหมที่จะแสดงข้อความนี้สำหรับตอนนี้ มันใช้งานไม่ได้ (แม้จะรีเฟรชหน้าถัดไป)
ตามที่ร้องขอ ฉันจะอธิบายว่าทำไมฉันถึงต้องใช้ฟังก์ชันปิดเครื่อง
กรณีการใช้งานของฉัน:
เราอยู่ในเบ็ดพรีเซฟของ โหนด A
ซึ่งเพิ่งได้รับสถานะที่กำหนดเองใหม่ (ซึ่งจำเป็นต้องบันทึก) สมมติว่าสถานะ 5
เมื่อโหนดประเภทนี้ถึงสถานะ 5 ฉันต้องบันทึก/อัปเดตโหนดอื่น โหนด B
ซึ่งมีการอ้างอิงถึงโหนด A
ในท่อนฮุคของ โหนด B
การคำนวณจะทำโดยใช้ค่าของสถานะนี้... ซึ่งหมายถึงสถานะของ โหนด A
ต้องบันทึกก่อนเริ่มการคำนวณ
นี่คือเหตุผลที่ฉันเลื่อนการบันทึกของ โหนด B
ด้วยฟังก์ชั่นปิดระบบ แต่ข้อความของผู้ใช้ปลายทางทั้งหมดจะไม่แสดง
คุณสามารถโต้แย้งได้ว่าใน presave hook ของ โหนด A
ฉันสามารถเรียกใช้ฟังก์ชันที่มีสถานะและ โหนด A
เป็นพารามิเตอร์ที่จะทำงาน แต่มีการแลกเปลี่ยน/อ้างอิงมากมายเช่นนี้ และเพื่อหลีกเลี่ยงรหัสสปาเก็ตตี้ ฉันใส่รหัสโมเดลธุรกิจทั้งหมดของฉันในฟังก์ชันบันทึกล่วงหน้าของโหนดทั้งสองประเภท