Я хотел получить термины таксономии из определенного словаря в Drupal 8.
Видимо, я все еще могу сделать это с помощью, taxonomy_get_tree
но это устарело.
Теперь я должен использовать TermStorageInterface :: loadTree
Я пытаюсь получить доступ к этой функции из, Block
но я не понимаю, как создать экземпляр TermStorageInterface
класса.
Я попытался получить доступ к функции напрямую, но это не статическая функция:
TermStorageInterface::loadTree('categories')
Я пытался создать экземпляр класса, но он сказал мне, Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
Я не понимаю, как работает этот класс и как я могу получить доступ к ссылкам таксономии. Я думаю, что мне не хватает понимания того, как работает Drupal.
источник
Это то, что я использую для создания списка тегов:
источник
Ошибка, которую вы получаете, заключается в том, что вы пытаетесь создать экземпляр интерфейса, что PHP не позволяет. Интерфейсы PHP описывают методы, которые классы должны реализовывать для конкретных случаев, но их нельзя использовать для создания объекта, например, с
new InterfaceName()
.Теперь,
taxonomy_get_tree()
когда это удалено, а служба менеджера сущностей устарела, вам нужно использовать следующий код.Нет необходимости использовать,
\Drupal::getContainer()
поскольку\Drupal
предоставляет вспомогательный метод для получения службы менеджера типов сущностей.источник
Загрузка с использованием машинного названия словаря (vid):
источник
\ Drupal :: entityManager () устарела, поэтому у меня это сработало
источник
Я только что написал функцию, не стесняйтесь редактировать и использовать :) Мне нужен идентификатор термина, но вы можете вернуть все, что захотите.
источник
$query->condition
после не$query->execute()
имеет никакого эффекта. Также, если первый член не является правильным, foreach вернет ноль, а не проверяет следующий член. (В вашем случае вы могли бы вместо этого использовать taxonomy_term_load_multiple_by_name ?)Вот пример D8, как получить доступ к терминам таксономии на основе имени словарного автомата:
Для того, чтобы загрузить целые объекты, используйте:
loadTree('categories', 0, NULL, TRUE)
.источник
Если вам нужен термин сущность, вы можете использовать loadByProperties ().
источник
источник
Вы можете увидеть полное описание здесь https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
источник