Puncte:0

Cum să obțineți revizuirea unui paragraf

drapel sa

Am un cod care rulează hook_node_update. Acest cod preia revizuirea nodului salvat și compară valorile câmpurilor dintre nodul curent și revizuirea acestuia pentru a genera un fel de jurnal istoric (ce este șters/actualizat/adăugat).

Funcționează foarte bine, cu excepția câmpului paragraf... Când codul meu încearcă să obțină revizuirea unui paragraf (recursiv), am primit de fiecare dată același paragraf în loc de vechea revizuire (deci nu există diferențe de înregistrat)

Aici este codul meu pentru a obține revizuirea unui nod salvat (funcționează bine). Acest cod este folosit și pentru paragrafe (nu funcționează)

$updated_entity : nodul/paragraful în prezent în proces pentru a fi salvat

$old_entity : revizuirea de comparat

  $entitate_veche = $entitate_actualizată->original;
  if (!$old_entity) {
    $storage = $this->getStorage($updated_entity);
    // nu este nevoie să testăm dacă este revizuibil, deoarece folosim numai Node și Paragrafe
    if ($revision_id = $updated_entity->getLoadedRevisionId()) {
      $old_entity = $storage->loadRevision($revision_id);
     }
    else {
      //... manipularea unei noi entitati
      ]);
    }
  }

Acest cod, atunci când este aplicat la paragrafe, produce un $entitate_veche == $entitate_actualizată

Paragrafele sunt extrase din nodul salvat în prezent, după cum urmează:

$paragrafe = $entitate_actualizată->get($câmp_paragraf)->Entități de referință();

după aceea, ei devin $updated_entity variabilă în funcția superioară care încearcă să obțină revizuirea...

Puncte:1
drapel cn

Cel nenumit superior funcția funcționează numai pentru un nod specific pe care îl obțineți prin intermediul cârligului ca parametru. Încărcați paragrafele vechi la care se face referire prin entitatea originală:

$paragrafe_vechi = $nod->original->get($paragraph_field)->referencedEntities();

Pentru paragrafele imbricate puteți aplica apoi încărcare recursivă, dar fiecare ramură (veche/nouă) separat și nu cu superior funcția, utilizați ->referencedEntities() pentru multiplu și ->entity pentru elemente de câmp unic, aceste funcții încarcă revizuiri.

Într-un site multilingv, trebuie să obțineți traducerea paragrafului folosind limbajul nodului:

$nod_language = $nod->language()->getId();
$valoare = $paragraf->getTranslation($limba_nod)->field_foo->valoare;
drapel cn
Comentariile nu sunt pentru discuții extinse; această conversație a fost [mutată în chat](https://chat.stackexchange.com/rooms/131668/discussion-on-answer-by-4k4-how-to-get-the-revision-of-a-paragraph) .
drapel cn
Dar ce se întâmplă dacă paragrafele sunt reordonate? O cheie de matrice dată din matricea returnată de referencedEntities poate să nu indice aceeași entitate. Cred că, în schimb, ar trebui să încărcăm entitatea mai veche din ID-ul de entitate al intrării de paragraf.

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.