Î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.