De ceva vreme trebuie să folosesc o funcție de închidere. Iată un exemplu stupid:
...
drupal_register_shutdown_function('display_message');
...
function display_message() {
Drupal::messenger()->addMessage('Bună lume');
}
Este posibil să afișați acest mesaj ca deocamdată, nu funcționează (chiar la reîmprospătarea paginii următoare)?
După cum mi-am cerut, voi explica de ce trebuie să folosesc funcția de închidere.
Cazul meu de utilizare:
Suntem în cârligul de presalvare a nodul A
care tocmai a primit o nouă stare personalizată (care trebuie salvată), să spunem starea 5.
Când acest tip de nod ajunge la starea 5, trebuie să salvez/actualizez altul nodul B
care conține o referință la nodul A.
În cârligul de presare al nodul B
, calculele se fac folosind valoarea acestui statut... asta înseamnă starea de nodul A
trebuie salvate înainte de a începe calculele.
Acesta este motivul pentru care amân salvarea nodul B
cu o funcție de închidere, dar toate mesajele utilizatorului final nu sunt afișate.
Puteți argumenta că în cârligul de presalvare al nodul A
, pot apela o funcție cu starea și nodul A
ca parametru care va face treaba; dar sunt multe schimburi/referințe ca acesta și pentru a evita un cod spaghetti, am pus tot codul meu de model de business în funcțiile de presave ale acelor două tipuri de noduri.