Рейтинг:3

Как не показывать сообщение "было создано"?

флаг kz

Я хочу удалить сообщение, которое выводится в области сообщений при создании нового узла. Типичное сообщение может выглядеть так.

"Статья Моя статья создана."

Я осматриваю узел в крюк_узел_вставка, и когда выполняются определенные критерии, я хочу удалить сообщение или предотвратить его появление.

Я попытался добавить следующее крюк_узел_вставка:

 $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 голосом до моего сегодня (добавление пользовательского обработчика отправки в форму создания узла) работает. Спасибо.

Это также принятый ответ (от Патрика Кенни) здесь.

4uk4 avatar
флаг cn
@FreeRadical, я не знаю, что вы имеете в виду под отвлекающими маневрами. Тема там более общая и несколько лет. Он развился за счет введения тогдашней новой службы обмена сообщениями, и вам нужно прочитать всю ветку, если вы хотите прийти к выводу, который вы резюмировали здесь, в вопросе.
4uk4 avatar
флаг cn
Я не знаю выражения отвлекающий маневр, но оно читается так, как будто вы не признаете усилия каждого участника по продвижению темы, которая является более общей, чем эта. Кстати, первое голосование за последний ответ было от меня, когда я сослался на него в своем комментарии. Запоздавшие ответы часто получают мало голосов просто потому, что слишком поздно, чтобы привлечь к себе внимание. Но это может измениться со временем, когда голосуют такие люди, как мы.
Free Radical avatar
флаг kz
«Красная сельдь» — это английская идиома, означающая что-то, что отвлекает от того, что имеет отношение к ответу на конкретный вопрос. Я не собирался принижать ответы на связанный вопрос - только сказать, что большинство ответов не имеют отношения к * этому * вопросу. Я удалил фразу, так как вы возражаете против нее.
Free Radical avatar
флаг kz
@NoSssweat Да, один из ответов сработал. Но было много того, что не помогло в моем конкретном случае использования, включая принятые и получившие наибольшее количество голосов ответы.Я добавил текст к вопросу, где я комментирую, насколько эти ответы соответствуют моему варианту использования.
Рейтинг:3
флаг cn

Если вы хотите добавить собственное сообщение в ловушку, вы можете очистить сообщения, а затем добавить свое собственное сообщение. Это быстро и легко, и это можно сделать в большинстве хуков.

К сожалению, это не будет работать с крюк_узел_вставка (), поэтому альтернативой является добавление пользовательского обработчика отправки в форму создания узла и статический вызов службы Messenger:

  \Drupal::messenger()->deleteByType('status');
  \Drupal::messenger()->addMessage(t('Мое новое пользовательское сообщение.'));

Это станет очень грязным, если вы переопределите много сообщений, но если вам просто нужно изменить несколько, я использую этот подход.

Рейтинг:2
флаг kz

Я принял и проголосовал за ответ Патрика Кенни, поскольку он обеспечивает 99% решения.

Однако я понял, что мне также нужно было это проработать:

Я осматриваю узел в крюк_узел_вставка, и когда выполняются определенные критерии, я хочу удалить сообщение или предотвратить его появление.

Это было добавлено к вопросу после Патрик Кенни ответил, но для тех, кому интересно, как был решен этот последний шаг:

  1. Если выполняются определенные критерии, вставьте сообщение об ошибке \Drupal::messenger()->addError(t('Ошибка'));
  2. Обнюхайте сообщение об ошибке в обработчике отправки и, если оно присутствует, удалите нежелательное сообщение о состоянии.

Вуаля!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.