Exemple: je veux obtenir tous les noms de balises qui se trouvent dans les balises field_t du noeud 5.
Je peux obtenir le target_id avec $ node-> field_tags-> getValue () ;
Mais le problème est que je ne sais pas à quelle entité appartient la valeur target_id. Peut être un identifiant de nœud, un identifiant de terme, un identifiant d'utilisateur. Sans ces informations, je ne suis pas en mesure d'utiliser le target_id pour obtenir le nom de la balise.
Comment puis-je obtenir tous les noms d'un champ de référence d'entité?
$node->toArray();
semble bien plus court et plus propre que l'utilisation\Drupal::service('entity_field.manager')->getFieldDefinitions('node', 'article');
print_r($entity->toArray())
Cela résout ce problème. Je peux obtenir tous les détails des champs. Merci beaucoup.Un champ de référence d'entité, par définition, ne peut cibler qu'un seul type d'entité afin que vous puissiez connaître votre type de cible en appelant
getSetting()
sur la définition de champ.Ou mieux encore, utilisez
EntityReferenceFieldItemList::referencedEntities()
pour extraire les entités référencées du nœud et les données associées dont vous avez besoin.la source
print_r($node->field_tag->referencedEntities());
semble être un porc de ressources, j'avais mis à niveau mon instance AWS , juste pour pouvoir le faire, car je continuais à obtenir WSOD.Or better yet
méthode. La première méthode est bonne, mais elle nécessitera des instructions if pour vérifier le type cible, puis obtenir la valeur. La réponse de Berdir est plus efficace car il n'y a pas besoin de contrôles.target_type
valeur d'unentity_reference
champ et j'ai cherché haut et bas ... jusqu'à ce que vous répondiez à ma question ici.