Chciałem odzyskać terminy taksonomiczne z pewnego słownictwa w Drupal 8.
Najwyraźniej wciąż mogę to zrobić za pomocą taxonomy_get_tree
ale jest przestarzałe.
Teraz muszę użyć TermStorageInterface :: loadTree
Próbuję uzyskać dostęp do tej funkcji z, Block
ale nie rozumiem, jak utworzyćTermStorageInterface
klasy.
Próbowałem uzyskać dostęp do funkcji bezpośrednio, ale nie jest to funkcja statyczna:
TermStorageInterface::loadTree('categories')
Próbowałem utworzyć wystąpienie, ale to mi powiedziało Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
Nie rozumiem, jak działa ta klasa i jak mogę uzyskać dostęp do linków do taksonomii. Myślę, że brakuje mi dużej części zrozumienia, jak działa Drupal.
źródło
Oto, czego używam do stworzenia listy tagów:
źródło
Występujący błąd polega na tym, że próbujesz utworzyć instancję interfejsu, co nie jest dozwolone przez PHP. Interfejsy PHP opisują metody, które klasy powinny implementować w określonych przypadkach, ale nie można ich używać do tworzenia obiektu, na przykład za pomocą
new InterfaceName()
.Teraz
taxonomy_get_tree()
został usunięty, a usługa menedżera encji została wycofana, musisz użyć następującego kodu.Nie trzeba go używać,
\Drupal::getContainer()
ponieważ\Drupal
udostępnia metodę pomocnika, aby uzyskać usługę menedżera typów jednostek.źródło
Załaduj używając nazwy maszyny słownika (vid):
źródło
\ Drupal :: entityManager () jest teraz przestarzałe, więc to zadziałało dla mnie
źródło
Właśnie napisałem funkcję, możesz ją edytować i używać :) Potrzebowałem identyfikatora terminu, ale możesz zwrócić wszystko, co chcesz.
źródło
$query->condition
po$query->execute()
nie ma wpływu. Również jeśli pierwszy termin nie jest właściwy, foreach zwróci wartość null zamiast sprawdzania następnego. (W twoim przypadku możesz być w stanie zamiast tego użyć taksonomii_term_load_multiple_by_name ?)Oto przykład D8, jak uzyskać dostęp do terminów taksonomii opartych na nazwie maszyny do słownictwa:
Aby załadować całych jednostek, należy:
loadTree('categories', 0, NULL, TRUE)
.źródło
Jeśli potrzebujesz encji terminowej, możesz użyć „loadByProperties ()”.
źródło
źródło
Możesz zobaczyć pełny opis tutaj https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
źródło