Я хочу удалить сообщение, которое выводится в области сообщений при создании нового узла. Типичное сообщение может выглядеть так.
"Статья Моя статья создана."
Я осматриваю узел в крюк_узел_вставка
, и когда выполняются определенные критерии, я хочу удалить сообщение или предотвратить его появление.
Я попытался добавить следующее крюк_узел_вставка
:
$messages = \Drupal::messenger()->all();
дпм($сообщения, 'сообщения');
Выводит пустой массив: сообщения => []
.
Этот аналогичный вопрос для Drupal 7 Как изменить/изменить сообщение об обновлении содержимого предлагает hook_message_alter()
. Я не нашел этого или замены для Drupal 9.
Было высказано предположение, что это дубликат Как программно изменить системное сообщение?
Я не думаю, что это дубликат, но этот вопрос содержит единственный ответ, который полезен для моего варианта использования. Наиболее ответов не подходят для этого вопроса, поэтому я считаю, что мой вопрос представляет собой более целенаправленную проблему и заслуживает того, чтобы оставаться открытым.
Я прошел все ответы. Это мои выводы относительно того, насколько хорошо они подходят это вопрос:
Принятый (используйте \Drupal::messenger()->deleteAll();
) не работает при помещении в крюк_узел_вставка
, и альтернативное размещение не предлагается.
Самый популярный (реализовать hook_preprocess_status_messages
) не горит после Форма создания узла отправлена и не действует.
Чтобы использовать взломать $СЕССИЯ
переменная (unset($SESSION['_symfony_flashes']['status'][0]);
) не работает в крюк_узел_вставка
и никакое другое размещение не предлагается.
Ответ от Achraf JEDAY с 1 голосом до моего сегодня (добавление пользовательского обработчика отправки в форму создания узла) работает. Спасибо.
Это также принятый ответ (от Патрика Кенни) здесь.