É fácil obter objetos de arquivo relacionados a nós por meio de um campo EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Então isso é ótimo. No entanto, quero usar algumas das propriedades do objeto de arquivo padrão e elas não estão disponíveis. Quando olho para as propriedades disponíveis no $images[0]->file
uso do código acima, vejo estas:
- fid
- nome
- mímica
- Tamanho
- url
- timestamp
- proprietário
Mais notavelmente, uri
está faltando e, em seu lugar, há uma url
propriedade, que é a URL externa completa para o arquivo de imagem. Eu quero manipular essas imagens via URI (criar thumbs, etc), por isso estou fazendo isso:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
O que parece negar todo o sentido de usar um EntityMetadataWrapper
em primeiro lugar.
o que estou perdendo? Onde está o URI no objeto de arquivo agrupado? Se não está disponível, pelo amor de todas as coisas boas e puras, por que não ?!
Estou ciente de que poderia desconstruir o URL de volta para um URI, mas isso também parece muito desnecessário.
hook_entity_property_info_alter()
", tudo bem, só queria saber
entity_metadata_system_entity_property_info()
onde várias novas propriedades são adornadas $info['file']['properties']
. Estou disposto a apostar se file_entity estava lá nessa matriz já teria as propriedades da entidade lá. Vou tentar escrever uma resposta mais tarde ou amanhã, se ninguém já tiver feito isso.
uri
está lá com file_entity.