Puncte:1

Cum pot încărca obiectul pachetului unei entități dintr-o entitate încărcată?

drapel in

Dacă vreau să obțin obiectul pachetului unei entități, cu un nod, pot face ceva de genul:

$bundle_object = \Drupal::entityTypeManager()
  ->getStorage('node_type')
  ->load($nod->bundle());

Dar asta pare un pic cam lung. Există o modalitate de a obține obiectul direct de la o entitate? Ceva asemănător cu $entity->getBundleObject()?

drapel cn
Mă îndoiesc că veți găsi o metodă generică pentru aceasta, oricum nu una în ContentEntityType de bază - pachetele sunt opționale, așa că nu există întotdeauna un obiect de furnizat
drapel cn
@Clive este corect, dacă doriți să scurtați acest lucru, puteți crea un nou [Storage Handler](https://chromatichq.com/insights/creating-and-using-entity-storage-methods)
sonfd avatar
drapel in
Ok, multumesc oameni buni. Nu am văzut unul, așa că m-am gândit că așa este, dar nu m-am simțit niciodată grozav despre cum îl etichetam.
Puncte:1
drapel cn

Câmpul pachetului este un câmp de referință și puteți încărca obiectul pachetului prin proprietatea câmpului entitate:

$node_type = $nod->tip->entity;

Mai generic pentru orice entitate de conținut:

if ($entity->getEntityType()->hasKey('bundle')) {
  $bundle = $entity->get($entity->getEntityType()->getKey('bundle'))->entity;
}
apaderno avatar
drapel us
În loc să apelați `$entity->getEntityType()->hasKey('bundle')` și apoi `$entity->getEntityType()->getKey('bundle')`, codul poate apela doar `$entity-> getEntityType()->getKey('bundle')` care returnează `FALSE` când cheia nu există și numele cheii atunci când acea cheie există.
4uk4 avatar
drapel cn
Da, metoda *has* nu este cu adevărat necesară și ar putea fi eliminată. Dar mulți oameni le folosesc pentru a face codul mai ușor de citit.
4uk4 avatar
drapel cn
Este clar, așa cum a comentat @Clive, că pachetele sunt opționale. Dacă tipul de entitate are pachete, cheia pachetului trebuie specificată.

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.