Exemplo: desejo obter todos os nomes de tags que estejam dentro de field_tags do nó 5.
Eu posso obter o target_id com $ node-> field_tags-> getValue () ;
Mas o problema é que não sei a que entidade o valor target_id pertence. Pode ser um ID do nó, ID do termo, ID do usuário. Sem essas informações, não consigo usar o target_id para obter o nome da tag.
Como posso obter todos os nomes de um campo de referência de entidade?
$node->toArray();
se parece muito mais curto e mais limpo do que usando\Drupal::service('entity_field.manager')->getFieldDefinitions('node', 'article');
print_r($entity->toArray())
Resolve esse problema. Consigo obter todos os detalhes dos campos. Muito obrigado.Um campo de referência de entidade, por definição, pode segmentar apenas um tipo de entidade, para que você possa saber qual é o seu tipo de destino acessando
getSetting()
a definição de campo.Ou melhor ainda, use
EntityReferenceFieldItemList::referencedEntities()
para acessar as entidades referenciadas do nó e os dados associados necessários.fonte
print_r($node->field_tag->referencedEntities());
parece ser um recurso pesado, eu atualizei minha instância da AWS , apenas para poder fazer isso, pois continuava recebendo o WSOD.Or better yet
método. O primeiro método é bom, mas exigirá que as instruções verifiquem o tipo de destino e depois obtenham o valor. A resposta de Berdir é mais eficiente, pois não há necessidade de verificações.target_type
valor de umentity_reference
campo e procurei alto e baixo por ele ... até você responder minha pergunta aqui.