Ottenere oggetti file relativi ai nodi attraverso un campo è facile usando un EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Quindi è fantastico. Tuttavia, desidero utilizzare alcune delle proprietà dell'oggetto file standard e non sono disponibili. Quando guardo le proprietà disponibili $images[0]->file
sull'uso del codice sopra, vedo queste:
- fid
- nome
- mimo
- dimensione
- url
- timestamp
- proprietario
In particolare, uri
manca e al suo posto c'è una url
proprietà, che è l'URL esterno completo del file di immagine. Voglio manipolare queste immagini tramite il loro URI (creare pollici, ecc.), Quindi mi rimane questo:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Il che sembra negare tutto il punto di usare un EntityMetadataWrapper
in primo luogo.
Cosa mi sto perdendo? Dov'è l'URI sull'oggetto file avvolto? Se non è disponibile, per l'amore di tutte le cose buone e pure, perché no ?!
Sono consapevole di poter decostruire l'URL in un URI, ma anche questo mi sembra molto inutile.
hook_entity_property_info_alter()
", allora va bene, volevo solo sapere
entity_metadata_system_entity_property_info()
, in cui un sacco di nuove proprietà vengono attaccate $info['file']['properties']
. Sono disposto a scommettere se file_entity fosse lì, quell'array avrebbe già le proprietà dell'entità. Cercherò di scrivere una risposta più tardi o domani se nessuno lo ha già fatto
uri
è lì con file_entity.