Comment puis-je obtenir plus facilement une image (son chemin) à partir du type de contenu d'article inclus dans Drupal 8?
Ce que j'ai, c'est une entité. L'utilisation $image = $node->fields['field_image']
me donne une sacrée structure, cependant.
N'y a-t-il pas un moyen plus simple d'obtenir le chemin de l'image? Je ne trouve pas non plus l'URL ici, ce que j'obtiens est une sorte de target_id (l'ID de fichier?).
get_class ($node->fields['field_image'])
vous donne?file_load()
une des méthodes disponibles surDrupal\file\FileInterface
Réponses:
Je n'ai pas vu ça avant.
Le moyen le plus court d'obtenir l'entité référencée pour un champ à valeur unique est le suivant:
Vous pouvez également spécifier explicitement le delta:
Cela fonctionne avec beaucoup de magie ArrayAccess et __get ().
Voir également la grande feuille de triche à http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet . et https://www.drupal.org/node/1795854 et les autres pages de documentation là-bas pour plus d'informations (encore beaucoup de travail en cours).
la source
Ce qui a fini par fonctionner pour moi en D8 est:
L'utilisation
kint($node->get('field_image')->entity)
et la recherche dans le tableau ont été très utilesEnsuite, dans mon fichier de brindilles, j'ai utilisé:
la source
Ma solution a donc été d'utiliser la méthode "referencedEntities ()" trouvée dans le nodeobject. Cela m'a donné un tableau d'objets File que je pouvais parcourir et utiliser la méthode "url ()" à partir des objets fichier pour récupérer un chemin valide.
la source
Si votre nœud a plus d'une image, vous pouvez l'utiliser pour obtenir un tableau des URL des images (utile pour créer des modules de diaporama parmi beaucoup d'autres choses utiles)
Le tableau imageUrls contiendra toutes les URL pour toutes les images associées au champ de nœuds. J'espère que cela t'aides.
la source