Într-o implementare a hook_node_insert()
, am următoarele trei linii de cod:
dpm($entity, 'entity');
$titlu = $entitate->getTitle();
dpm($titlu, 'titlu');
Din prima dpm()
Eu iau:
entitate =>
Drupal\nod\Entitate\Nod {#1632 â¼
+in_preview: nul
#valori: matrice:27 [â¼
...
„title” => matrice:1 [â¼
„x-default” => matrice:1 [â¼
0 => matrice:1 [â¼
„value” => „Titlul așteptat”
]
]
...
i.e. câmpul de titlu produs de dumperul variabil este câmpul de titlu pe care mă așteptam să îl văd.
Al doilea dpm()
produce:
titlu =>
„Titlul anterior”
i.e. când extrag titlul din entitate, folosind getTitle()
metoda, primesc o diferit valoare. Valoarea este de la o entitate (nod) încărcată I într-un controler de legătură de operațiuni (overriding ControllerBase
), dar nu a fost salvat în interiorul controlerului și nu ar trebui să se declanșeze hook_node_insert()
.
Construiesc și salvez un nou nod în controler, folosind acest cod:
$nod = \Drupal::entityTypeManager()->getStorage('nod')->create([
'type' => 'tipul_meu',
'body' => 'corp',
]);
$node->setTitle('Titlul așteptat');
$nod->salvare();
Presupun că acesta este $nod->salvare();
care trage hook_node_insert
.
Ce se intampla aici?
De ce apare titlul fals în cârlig și cum obțin rezultatul așteptat?
Pentru înregistrare: nu schimb nodul în hook_node_insert
. Îl șterg dacă titlul îndeplinește anumite criterii. Nu pot folosi o constrângere pentru a împiedica crearea acesteia din motive care nu au legătură cu această întrebare.