hook_entity_presave()
și hook_ENTITY_TYPE_presave()
nu trebuie să presupună că entitatea a fost editată folosind un formular sau că o pagină a fost afișată utilizatorilor. Aceste cârlige sunt, de asemenea, invocate atunci când o entitate este creată programatic, de exemplu cu următorul cod, care ar putea fi folosit și într-un hook_cron()
implementare.
$valori = [
'type' => 'articol',
'title' => 'Titlul articolului',
'uid' => 1,
'status' => TRUE,
];
$nod = \Drupal::entityManager()->getStorage('nod')->create($values);
$nod->salvare();
Cârligul invocat înainte ca o entitate să fie randată este hook_entity_view()
(sau hook_ENTITY_TYPE_view()
).
Folosind unul dintre aceste cârlige, un modul poate adăuga o matrice de randare suplimentară $build
, de exemplu cu $build['#attached']['library'][] = 'js/url-parameter.js';
.
Ca exemplu de cod, $display->getComponent()
ar trebui să fie folosit pentru a verifica că câmpul de entitate a fost setat să fie randat, deoarece utilizatorii administratori pot ascunde câmpurile din /admin/structure/types/manage/article/display (pentru Articol tipul de conținut). De exemplu, cu următoarele setări, aș ascunde un câmp personalizat de entitate și Etichete câmp pentru Articol tipul de conținut.
As verifica si valoarea lui $view_mode
transmise acelor cârlige, deoarece acea valoare spune de ce este randat nodul. De exemplu, când modulul Căutare indexează nodurile, $view_mode
este egal cu „index_căutare”
; când un nod este adăugat la un flux RSS, $view_mode
este egal cu 'rss'
. În aceste cazuri, probabil că nu doriți să adăugați o bibliotecă.