Tôi muốn xóa thông báo xuất ra trong khu vực thông báo khi một nút mới được tạo. Một tin nhắn điển hình có thể trông như thế này.
"Bài viết Bài viết của tôi đã được tạo."
Tôi kiểm tra nút trong hook_node_insert
và khi một số tiêu chí được đáp ứng, tôi muốn xóa tin nhắn hoặc ngăn không cho tin nhắn xuất hiện.
Tôi đã cố gắng đưa những điều sau đây vào hook_node_insert
:
$messages = \Drupal::messenger()->all();
dpm($messages, 'messages');
Nó xuất ra một mảng trống: tin nhắn => []
.
Câu hỏi tương tự này cho Drupal 7 Làm cách nào để thay đổi/chỉnh sửa thông báo nội dung cập nhật gợi ý hook_message_alter()
. Tôi chưa tìm thấy cái đó hoặc cái thay thế cho Drupal 9.
Nó đã được gợi ý rằng đây là một bản sao của Làm cách nào để thay đổi thông báo hệ thống theo chương trình?
Tôi không nghĩ nó trùng lặp, nhưng câu hỏi đó chứa một câu trả lời duy nhất hữu ích cho trường hợp sử dụng của tôi. Phần lớn trong số các câu trả lời không phù hợp với câu hỏi này, vì vậy tôi tin rằng câu hỏi của tôi đưa ra một vấn đề tập trung hơn và xứng đáng được tiếp tục mở.
Tôi đã đi qua tất cả các câu trả lời. Đây là những phát hiện của tôi về mức độ phù hợp của chúng cái này câu hỏi:
Cái được chấp nhận (sử dụng \Drupal::messenger()->deleteAll();
) không hoạt động khi được đặt trong hook_node_insert
và không có vị trí thay thế nào được đề xuất.
Người được bình chọn nhiều nhất (triển khai hook_pre process_status_messages
) không cháy sau đó biểu mẫu tạo nút đã được gửi và không có hiệu lực.
Để sử dụng hack $SESSION
Biến đổi (unset($SESSION['_symfony_flash']['status'][0]);
) không hoạt động trong hook_node_insert
và không có vị trí nào khác được đề xuất.
Câu trả lời từ Achraf JEDAY, với 1 upvote trước của tôi ngày hôm nay (Thêm trình xử lý gửi tùy chỉnh vào biểu mẫu tạo nút) hoạt động. Cudos.
Đây cũng là câu trả lời được chấp nhận (từ Patrick Kenny) tại đây.