Obtener archivos de objetos relacionados con nodos a través de un campo es fácil usando EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Entonces eso es genial. Sin embargo, quiero usar algunas de las propiedades del objeto de archivo estándar, y no están disponibles. Cuando miro las propiedades disponibles al $images[0]->file
usar el código anterior, veo estas:
- defensor
- nombre
- mímica
- Talla
- url
- marca de tiempo
- propietario
Lo más notable uri
es que falta, y en su lugar hay una url
propiedad, que es la URL externa completa del archivo de imagen. Quiero manipular estas imágenes a través de su URI (crear pulgares, etc.), así que me quedo haciendo esto:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Lo que parece negar todo el punto de usar un EntityMetadataWrapper
en primer lugar.
¿Qué me estoy perdiendo? ¿Dónde está el URI en el objeto de archivo envuelto? Si no está disponible, por amor a todas las cosas buenas y puras, ¿por qué no?
Soy consciente de que podría deconstruir la URL a un URI, pero eso también se siente muy innecesario.
hook_entity_property_info_alter()
", entonces está bien, solo quería saber
entity_metadata_system_entity_property_info()
donde se agregan un montón de nuevas propiedades $info['file']['properties']
. Estoy dispuesto a apostar si file_entity estaba allí, esa matriz ya tendría las propiedades de la entidad. Intentaré escribir una respuesta más tarde o mañana si nadie ya lo ha hecho
uri
está ahí con file_entity.