Cum pot obține numele termenului taxonomic dintr-un ID de termen? (Drupal, 8, Termeni De Taxonomie)

Diana a intrebat.

Încerc să obțin numele unui termen taxonomic după ID-ul termenului. Conform unei alte postări, ar trebui să încarc mai întâi termenul:

$term = Drupal::entityTypeManager()->getStorage('taxonomy')->load($tid);

Dar apoi primesc această eroare :

Notice: Proprietate nedefinită: DrupalCoreEntityPluginDataTypeEntityReference::$target

Ce fac greșit? Cum pot obține numele termenului?

3 răspunsuri
Anisha Shaikh
 $term_name = DrupaltaxonomyEntityTerm::load($term_id)->get('name')->value;

Veți obține numele termenului

Comentarii

  • O ușoară schimbare, dar puteți utiliza label() în loc de get('name')->value. Cu toate entitățile, de obicei, apropo, așa că nu trebuie să știți dacă este name sau orice altceva. –  > Por Gábor.
Drupal de Comptoir

Sau puteți folosi pur și simplu clasa The entity Term:

use DrupaltaxonomyEntityTerm;

și în codul dumneavoastră:

$term = Term::load($tid);
$name = $term->getName();

Comentarii

  • Primul meu instinct când m-am uitat la acest lucru a fost „oh nu, cum rămâne cu injecția de dependență cu care ne tot lovesc în cap în Drupal-land în aceste zile?”, dar – la inspecție – metoda statică ::load($id), împărtășită de toate tipurile de entități, are tot suportul necesar pentru injecția de dependență încorporat – așa că aceasta ar fi acum alegerea mea pentru a încărca o entitate de orice fel (nod, comentariu etc). De fapt, nu înțeleg de ce ar folosi cineva metoda Drupal::entityTypeManager()->blah->blah->blah->blah acum! (poate că altcineva va interveni și va da un motiv bun pentru asta?)  > Por Daniel Scott.
  • @DanielScott – Drupal::entityTypeManager()->getStorage('ENTITY_TYPE_ID')->load($id); este foarte ușor de reținut. Pur și simplu înlocuiți ENTITY_TYPE_ID și apoi puteți load sau loadMultiple sau loadByProperties etc. Și funcționează pentru noduri, pentru termeni, pentru utilizatori, pentru roluri, pentru vocabulare, pentru tipuri de noduri etc. Puteți chiar să interogați baza de date din această aplicație. –  > Por leymannx.
  • @DanielScott, nu întrebarea sau ambele răspunsuri se referă la injecția de dependență. Aceasta ar arăta astfel $this->entityTypeManager->getStorage('ENTITY_TYPE_ID')->load($id);. Dar apelul static de mână lungă face refactorizarea mai ușoară dacă aveți nevoie de DI. –  > Por 4k4.
Kevin

Codul corect este următorul.

$term = Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);

Tipul de entitate este taxonomy_term, și nu taxonomy.

Apoi, utilizați $term->getName().