Vreau să elimin mesajul care apare în zona de mesaje atunci când este creat un nou nod. Un mesaj tipic poate arăta astfel.
„Articol Articolul meu a fost creat.”
Examinez nodul în hook_node_insert
, iar când sunt îndeplinite anumite criterii, vreau să șterg mesajul sau să împiedic apariția mesajului.
Am încercat să introduc următoarele hook_node_insert
:
$mesaje = \Drupal::messenger()->all();
dpm($mesaje, 'mesaje');
Acesta scoate o matrice goală: mesaje => []
.
Această întrebare similară pentru Drupal 7 Cum schimb/modific un mesaj de actualizare a conținutului sugerează hook_message_alter()
. Nu am găsit asta sau un înlocuitor pentru Drupal 9.
S-a sugerat că acesta este un duplicat al Cum modific programatic un mesaj de sistem?
Nu cred că este un duplicat, dar acea întrebare conține un singur răspuns care este util pentru cazul meu de utilizare. Cel mai dintre răspunsuri nu sunt potrivite pentru această întrebare, așa că cred că întrebarea mea prezintă o problemă mai concentrată și merită să rămână deschisă.
Am trecut prin toate răspunsurile. Acestea sunt constatările mele cu privire la cât de bine se potrivesc acest întrebare:
Cel acceptat (utilizare \Drupal::messenger()->deleteAll();
) nu funcționează când este introdus hook_node_insert
, și nu este sugerată nicio plasare alternativă.
Cel mai votat (implement hook_preprocess_status_messages
) nu trage după Formularul de creare a nodurilor a fost trimis și nu are efect.
Pentru a utiliza hack the $SESIUNE
variabil (unset($SESSION['_symfony_flashes']['status'][0]);
) nu funcționează în hook_node_insert
și nu este sugerată nicio altă plasare.
Răspunsul de la Achraf JEDAY, cu 1 vot pozitiv înainte de al meu de astăzi (Adăugarea unui handler de trimitere personalizat la formularul de creare a nodurilor) funcționează. Cudos.
Acesta este și răspunsul acceptat (de la Patrick Kenny) aici.