Il est facile de mettre la main sur des objets fichier liés aux noeuds via un champ en utilisant EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
C'est super. Cependant, je veux utiliser certaines des propriétés de l'objet fichier standard, et elles ne sont pas disponibles. Quand je regarde les propriétés disponibles sur l' $images[0]->file
utilisation du code ci-dessus, je vois celles-ci:
- fid
- Nom
- mime
- Taille
- url
- horodatage
- propriétaire
Plus particulièrement, il uri
manque, et à sa place il y a une url
propriété, qui est l'URL externe complète du fichier image. Je veux manipuler ces images via leur URI (créer des pouces, etc.), donc je reste à faire ceci:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Ce qui semble nier tout l'intérêt d'utiliser un EntityMetadataWrapper
en premier lieu.
Qu'est-ce que je rate? Où est l'URI sur l'objet fichier encapsulé? Si ce n'est pas disponible, pour l'amour de toutes choses bonnes et pures, pourquoi pas?!
Je suis conscient que je pourrais déconstruire l'URL en URI, mais cela semble également très inutile.
hook_entity_property_info_alter()
" alors c'est bien, je voulais juste savoir
entity_metadata_system_entity_property_info()
, où un tas de nouvelles propriétés sont clouées $info['file']['properties']
. Je suis prêt à parier que si file_entity était là, ce tableau aurait déjà les propriétés d'entité elles-mêmes. J'essaierai de rédiger une réponse plus tard ou demain si personne ne l'a déjà fait
uri
est là avec file_entity.