Как получить тип содержимого сущности узла из объекта $entity?


Я использую hook_entity_type_presave() для изменения значений узлов при сохранении, но я хочу сделать это только для определенного типа контента.

Как проверить тип содержимого объекта $entity? Я просмотрел документацию для узла класса и , работающих с API сущностей, но все, что я нашел, - это как получить тип сущности, а не тип контента.

Учитывая объект узла $entity, как я могу проверить тип контента?

Author: Patrick Kenny, 2016-01-30

2 answers

Если вы знаете, что у вас есть узел, то вы можете использовать getType(). Если вы этого не знаете, вы можете использовать общий метод ->bundle(). Обратите внимание, что второй вернет тип сущности в случае типа сущности, у которого нет пакетов, таких как пользователи.

Опять же, моя стандартная ссылка на http://wizzlern.nl/sites/wizzlern.nl/files/artikel/drupal-content-entity-8.0.pdf , он содержит оба метода.

 14
Author: Berdir, 2016-01-30 18:56:58

Тип сущности и имя пакета - это две вещи; обычно вы хотите иметь и то, и другое. Например, у вас может быть медиа-объект пакета "изображение". Одни только имена пакетов могут быть не уникальными, я думаю, вы могли бы назвать тип контента "галерея", а также тип абзаца "галерея" без ошибки проверки. Итак:

$entity->getEntityTypeId()

Указывает тип сущности: узел, пользователь, абзац, носитель

$entity->bundle()

Дает вам имя пакета, если оно у вас есть, может быть "галерея", как описано выше. Как Бердир указывает, что функция GetType() работает только на узлах, поэтому функция getEntityTypeId() будет заменой функции, которая работает на всех типах сущностей.

 2
Author: eigentor, 2019-12-11 21:25:21