Eu queria recuperar termos de taxonomia de um determinado vocabulário no Drupal 8.
Aparentemente, ainda posso fazer isso usando, taxonomy_get_tree
mas está obsoleto.
Agora tenho que usar TermStorageInterface :: loadTree
Eu estou tentando acessar esta função a partir de um, Block
mas eu não entendo como instanciar a TermStorageInterface
classe.
Eu tentei acessar a função diretamente, mas não é uma função estática:
TermStorageInterface::loadTree('categories')
Tentei instanciar a aula, mas ela me disse Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
Não entendo como essa classe funciona e como posso acessar os links de taxonomia. Acho que estou perdendo uma grande parte do entendimento de como o Drupal funciona.
fonte
Isto é o que eu uso para criar uma lista de tags:
fonte
O erro que você está recebendo é porque está tentando criar uma instância de uma interface, o que não é algo que o PHP permita. As interfaces PHP descrevem os métodos que as classes devem implementar para casos específicos, mas não podem ser usados para criar um objeto, por exemplo, com
new InterfaceName()
.Agora que
taxonomy_get_tree()
foi removido e o serviço do gerenciador de entidades foi preterido, você precisa usar o seguinte código.Não é necessário usar,
\Drupal::getContainer()
pois\Drupal
expõe um método auxiliar para obter o serviço de gerenciamento de tipo de entidade.fonte
Carregar usando o nome da máquina do vocabulário (vid):
fonte
\ Drupal :: entityManager () agora está obsoleto, então funcionou para mim
fonte
Acabei de escrever uma função, fique à vontade para editar e usar :) Eu precisava do id do termo, mas você pode retornar o que quiser.
fonte
$query->condition
depois$query->execute()
não tem efeito. Além disso, se o primeiro termo não for o correto, o foreach retornará nulo em vez de verificar o próximo. (Para seu caso de uso, você pode ser capaz de usar taxonomy_term_load_multiple_by_name em vez disso?)Aqui está o exemplo D8 de como acessar termos de taxonomia com base no nome da máquina de vocabulário:
Para carregar todo o entidades, use:
loadTree('categories', 0, NULL, TRUE)
.fonte
Se você precisar do termo entidade, poderá usar 'loadByProperties ()'.
fonte
fonte
Você pode ver a descrição completa aqui https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
fonte