Score:0

Drupal::messenger() ไม่ทำงานในฟังก์ชันปิดเครื่อง

ธง sa

บางครั้งฉันต้องใช้ฟังก์ชันปิดเครื่อง นี่คือตัวอย่างที่โง่เขลา:

...
drupal_register_shutdown_function('display_message');
...

ฟังก์ชัน display_message() {
  Drupal::messenger()->addMessage('สวัสดีชาวโลก');
}

เป็นไปได้ไหมที่จะแสดงข้อความนี้สำหรับตอนนี้ มันใช้งานไม่ได้ (แม้จะรีเฟรชหน้าถัดไป)

ตามที่ร้องขอ ฉันจะอธิบายว่าทำไมฉันถึงต้องใช้ฟังก์ชันปิดเครื่อง

กรณีการใช้งานของฉัน:

เราอยู่ในเบ็ดพรีเซฟของ โหนด A ซึ่งเพิ่งได้รับสถานะที่กำหนดเองใหม่ (ซึ่งจำเป็นต้องบันทึก) สมมติว่าสถานะ 5

เมื่อโหนดประเภทนี้ถึงสถานะ 5 ฉันต้องบันทึก/อัปเดตโหนดอื่น โหนด B ซึ่งมีการอ้างอิงถึงโหนด A

ในท่อนฮุคของ โหนด Bการคำนวณจะทำโดยใช้ค่าของสถานะนี้... ซึ่งหมายถึงสถานะของ โหนด A ต้องบันทึกก่อนเริ่มการคำนวณ

นี่คือเหตุผลที่ฉันเลื่อนการบันทึกของ โหนด B ด้วยฟังก์ชั่นปิดระบบ แต่ข้อความของผู้ใช้ปลายทางทั้งหมดจะไม่แสดง

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

Score:2
ธง cn

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

Baud avatar
sa flag
นี่เป็นครั้งแรกที่ฉันใช้คุณสมบัตินี้ (เช่น เพื่อบันทึกโหนดหลังจากสิ้นสุดธุรกรรม DB ทั้งหมด) สิ่งที่คุณพูดดูฉลาด คุณรู้วิธีอื่นในการรันโค้ดก่อนที่จะเริ่มการเรนเดอร์ แต่หลังจากสิ้นสุดธุรกรรม DB หรือไม่
cn flag
@Baud ดูเหมือนว่าคุณอาจกำลังทุกข์ทรมานจากกลุ่มอาการ XY ถ้าฉันเป็นคุณ ฉันจะถอยกลับไปและพยายามอธิบายว่าเป้าหมายสุดท้ายของคุณคืออะไร ทำไมคุณถึงรู้สึกว่าจำเป็นต้องเพิ่มข้อความนี้ที่จุดใดจุดหนึ่งใน วงจรชีวิตของหน้าแทนที่จะปล่อยให้เป็นไปตามกระแสปกติ อะไรทำนองนั้น มิฉะนั้น คุณอาจได้รับคำตอบเช่นนี้เท่านั้น และแม้ว่าจะถูกต้องและมีประโยชน์ แต่ก็ไม่สามารถแก้ปัญหาของคุณได้เนื่องจากปัญหายังไม่เป็นที่เข้าใจอย่างถ่องแท้
Baud avatar
sa flag
@Clive ฉันได้อัปเดตคำถามแล้ว... ฉันไม่แน่ใจว่าชัดเจนเพียงพอ

โพสต์คำตอบ

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