Пример: я хочу получить все имена тегов, которые находятся внутри field_tags узла 5.
Я могу получить target_id с помощью $ node-> field_tags-> getValue () ;
Но проблема в том, что я не знаю, к какому объекту относится значение target_id. Может быть идентификатором узла, термином id, идентификатором пользователя. Без этой информации я не могу использовать target_id для получения имени тега.
Как я могу получить все имена поля ссылки на сущность?
$node->toArray();
конечно, выглядит намного короче и чище, чем при использовании\Drupal::service('entity_field.manager')->getFieldDefinitions('node', 'article');
print_r($entity->toArray())
это решает эту проблему. Я могу получить все детали полей. Огромное спасибо.Поле ссылки на сущность по определению может предназначаться только для одного типа сущности, поэтому вы можете узнать, какой у вас целевой тип, вызвав
getSetting()
определение поля.Или, что еще лучше, используйте
EntityReferenceFieldItemList::referencedEntities()
для извлечения ссылочных сущностей узла и связанных с ними данных, которые вам нужны.источник
print_r($node->field_tag->referencedEntities());
Похоже, это проблема с ресурсами, я обновил свой экземпляр AWS , просто чтобы иметь возможность сделать это, так как я продолжал получать WSOD.Or better yet
метод. Первый метод хорош, но он требует, чтобы операторы проверяли тип цели и затем получали значение. Ответ Бердира более эффективен, поскольку нет необходимости в проверках.target_type
значение изentity_reference
поля и искал высоко и низко его ... пока вы не ответили на мой вопрос здесь.