Memegang objek file yang terkait dengan node melalui bidang mudah menggunakan EntityMetadataWrapper:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Jadi itu bagus. Namun, saya ingin menggunakan beberapa properti dari objek file standar, dan mereka tidak tersedia. Ketika saya melihat properti yang tersedia $images[0]->filemenggunakan kode di atas, saya melihat ini:
- fid
- nama
- pantomim
- ukuran
- url
- cap waktu
- pemilik
Terutama, uritidak ada, dan sebagai gantinya ada urlproperti, yang merupakan URL eksternal penuh untuk file gambar. Saya ingin memanipulasi gambar-gambar ini melalui URI mereka (buat jempol, dll), jadi saya tetap melakukan ini:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Yang tampaknya meniadakan seluruh titik menggunakan EntityMetadataWrapperdi tempat pertama.
Apa yang saya lewatkan? Di mana URI pada objek file yang dibungkus? Jika tidak tersedia, untuk cinta semua hal baik dan murni, mengapa tidak ?!
Saya sadar saya bisa mendekonstruksi URL kembali ke URI, tetapi itu juga terasa sangat tidak perlu.
hook_entity_property_info_alter()" maka itu baik-baik saja, hanya ingin tahu
entity_metadata_system_entity_property_info(), di mana sekelompok properti baru ditempelkan ke $info['file']['properties']. Saya berani bertaruh jika file_entity ada di sana, array itu sudah memiliki properti entitas sendiri di sana. Saya akan mencoba menulis jawaban nanti atau besok jika belum ada yang melakukannya
uriada di sana dengan file_entity.