Điểm:3

Làm sao để không hiện thông báo "đã được tạo"?

lá cờ kz

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_insertvà 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_insertvà 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_insertvà 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.

4uk4 avatar
lá cờ cn
@FreeRadical, tôi không biết ý của bạn là gì khi nói cá trích đỏ. Chủ đề ở đó là tổng quát hơn và vài năm tuổi. Nó đã phát triển bằng cách giới thiệu dịch vụ nhắn tin mới sau đó và bạn phải đọc toàn bộ chuỗi nếu bạn muốn đi đến kết luận mà bạn đã tóm tắt ở đây trong câu hỏi.
4uk4 avatar
lá cờ cn
Tôi không biết cách diễn đạt cá trích đỏ, nhưng có vẻ như bạn không ghi nhận nỗ lực của từng người tham gia để thúc đẩy chủ đề chung chung hơn chủ đề này. BTW phiếu bầu đầu tiên cho câu trả lời mới nhất là từ tôi khi tôi tham chiếu nó trong nhận xét của mình. Những câu trả lời muộn thường có ít phiếu bầu đơn giản vì chúng đến quá muộn để thu hút nhiều sự chú ý. Nhưng điều này có thể thay đổi theo thời gian khi những người như chúng tôi bỏ phiếu.
Free Radical avatar
lá cờ kz
"Red herring" là một thành ngữ tiếng Anh có nghĩa là điều gì đó làm sao lãng những gì liên quan đến việc trả lời một câu hỏi cụ thể. Tôi không có ý chê bai các câu trả lời trong câu hỏi được liên kết - chỉ để nói rằng hầu hết các câu trả lời không liên quan đến câu hỏi * này *. Tôi đã xóa cụm từ vì bạn phản đối nó.
Free Radical avatar
lá cờ kz
@NoSssweat Có, một trong những câu trả lời đã có hiệu quả. Nhưng có rất nhiều điều không giúp được gì trong trường hợp sử dụng cụ thể của tôi, bao gồm cả các câu trả lời được chấp nhận và được bình chọn nhiều nhất.Tôi đã thêm văn bản vào câu hỏi mà tôi nhận xét về mức độ phù hợp của những câu trả lời này với trường hợp sử dụng của tôi.
Điểm:3
lá cờ cn

Nếu bạn muốn thêm một thông báo tùy chỉnh vào hook, bạn có thể xóa các thông báo đó rồi thêm thông báo tùy chỉnh của mình. Điều này nhanh chóng và dễ dàng, và nó có thể được thực hiện trong hầu hết các móc.

Thật không may, điều này sẽ không làm việc với hook_node_insert(), do đó, một giải pháp thay thế là thêm trình xử lý gửi tùy chỉnh vào biểu mẫu tạo nút và gọi tĩnh dịch vụ Messenger:

  \Drupal::messenger()->deleteByType('status');
  \Drupal::messenger()->addMessage(t('Tin nhắn tùy chỉnh mới của tôi.'));

Điều này sẽ trở nên rất lộn xộn nếu bạn ghi đè nhiều tin nhắn, nhưng nếu bạn chỉ cần thay đổi một số tin nhắn, thì đây là phương pháp tôi sử dụng.

Điểm:2
lá cờ kz

Tôi đã chấp nhận và nâng cấp câu trả lời của Patrick Kenny vì nó cung cấp 99% giải pháp.

Tuy nhiên, tôi nhận ra rằng tôi cũng cần giải quyết vấn đề này:

Tôi kiểm tra nút trong hook_node_insertvà 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.

Điều này đã được thêm vào câu hỏi sau đó Patrick Kenny đã trả lời, nhưng đối với những người quan tâm đến cách giải quyết bước cuối cùng này:

  1. Nếu một số tiêu chí được đáp ứng, hãy chèn thông báo lỗi \Drupal::messenger()->addError(t('Error'));
  2. Tìm thông báo lỗi trong trình xử lý gửi và nếu có, hãy xóa thông báo trạng thái không mong muốn.

Thì đấy !

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.