ฉันต้องการลบข้อความที่ส่งออกในพื้นที่ข้อความเมื่อมีการสร้างโหนดใหม่ ข้อความทั่วไปอาจมีลักษณะดังนี้
"บทความ บทความของฉันถูกสร้างขึ้นแล้ว"
ฉันตรวจสอบโหนดใน hook_node_insert
และเมื่อเป็นไปตามเกณฑ์ที่กำหนด ฉันต้องการลบข้อความหรือป้องกันไม่ให้ข้อความปรากฏ
ฉันได้ลองใส่สิ่งต่อไปนี้ hook_node_insert
:
$messages = \Drupal::messenger()->ทั้งหมด();
dpm($messages, 'ข้อความ');
มันส่งออกอาร์เรย์ว่าง: ข้อความ => []
.
คำถามที่คล้ายกันนี้สำหรับ Drupal 7 ฉันจะเปลี่ยน/แก้ไขข้อความอัปเดตเนื้อหาได้อย่างไร แนะนำ hook_message_alter()
. ฉันไม่พบสิ่งนั้นหรือสิ่งทดแทนสำหรับ Drupal 9
มีคนแนะนำว่าสิ่งนี้ซ้ำกับ ฉันจะเปลี่ยนข้อความระบบโดยทางโปรแกรมได้อย่างไร
ฉันไม่คิดว่ามันซ้ำกัน แต่คำถามนั้นมีคำตอบเดียวที่เป็นประโยชน์ต่อกรณีการใช้งานของฉัน ที่สุด คำตอบไม่เหมาะสำหรับคำถามนี้ ดังนั้นฉันเชื่อว่าคำถามของฉันนำเสนอปัญหาที่มุ่งเน้นมากขึ้นและสมควรเปิดประเด็นต่อไป
ฉันอ่านคำตอบทั้งหมดแล้ว นี่คือสิ่งที่ฉันค้นพบว่าเหมาะสมเพียงใด นี้ คำถาม:
ที่ได้รับการยอมรับ (ใช้ \Drupal::messenger()->deleteAll();
) ไม่ทำงานเมื่อใส่เข้าไป hook_node_insert
และไม่มีการแนะนำตำแหน่งอื่น
หนึ่ง upvoted มากที่สุด (ใช้ hook_preprocess_status_messages
) ไม่ติดไฟ หลังจาก ส่งแบบฟอร์มการสร้างโหนดแล้วและไม่มีผลกระทบใดๆ
เพื่อใช้แฮ็ค $เซสชัน
ตัวแปร (unset($SESSION['_symfony_flashes']['status'][0]);
) ไม่ทำงาน hook_node_insert
และไม่แนะนำตำแหน่งอื่น
คำตอบจาก Achraf JEDAY โดยมีการโหวต 1 ครั้งก่อนหน้าของฉันในวันนี้ (การเพิ่มตัวจัดการการส่งแบบกำหนดเองไปยังแบบฟอร์มการสร้างโหนด) ใช้งานได้ คูโดส
นี่เป็นคำตอบที่ยอมรับ (จาก Patrick Kenny) ที่นี่