Puncte:1

Cum să găsesc modulul care îmi actualizează nodul după inserare

drapel jp

Când încerc să creez o carte nouă, primesc următorul mesaj:

Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Încălcarea constrângerii de integritate: 1062 Duplicați intrarea „53” pentru cheia „PRIMARY”: INSERT INTO „book”

Problema aici este că cartea este adăugată de două ori. De aceea cartea este creată o dată, iar pentru cealaltă primesc mesajul de mai sus.

Din anumite motive, crearea nodului este actualizată direct după crearea acestuia. Acest lucru nu se întâmplă cu o instalare curată cu modulul de carte. Deci, trebuie să fie unul dintre modulele mele personalizate sau contributive care fac asta. Prin urmare, modulul de carte dă această eroare.Pentru a-mi da seama de unde vine problema, mă întreb cum pot vedea ce modul actualizează nodul după inserare.

Este corect că singurul mod în care este apelat hook_node_update este folosind salva() comanda in cod? Încerc să găsesc asta în acest moment, dar niciunul dintre modulele care utilizează această comandă nu pare să fie problema.

Mă poate ajuta cineva să fac următorul pas în depanarea acestei probleme?

leymannx avatar
drapel ne
Verificați modulele contrib și personalizate pentru hook_entity_insert, hook_book_insert hook_entity_presave, hook_book_presave etc. și $entity->save(), $book->save() etc.
Joost avatar
drapel jp
Așa că caut un „save()” în partea unuia dintre cârlige, nu?
leymannx avatar
drapel ne
Ah, da, save() în unele hook_node_update personalizate sună suspect. Acest lucru ar trebui probabil să se întâmple în hook_node_presave cu doar set()
Joost avatar
drapel jp
M-am uitat la toate modulele mele, dar nu există niciun „save()” greșit de găsit. Este posibil să o faci invers? Pot afla ce module... bucată de cod îmi actualizează nodul?
leymannx avatar
drapel ne
Nici idee acum. Probabil că aș începe să dezactivez modulele personalizate unul câte unul, apoi aș continua cu contrib, până când ați găsi vinovatul.
Joost avatar
drapel jp
O sa incerc aceasta abordare multumesc
Puncte:5
drapel tr

You could implement hook_module_implements_alter to list all modules that implement a specific hook this way:

function myModule_module_implements_alter(&$implementations, $hook) {
  if ($hook === 'entity_insert') {
    // List of all modules names that implement hook_entity_insert.
    dump(array_keys($implementations));
  }
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.