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]->file
menggunakan kode di atas, saya melihat ini:
- fid
- nama
- pantomim
- ukuran
- url
- cap waktu
- pemilik
Terutama, uri
tidak ada, dan sebagai gantinya ada url
properti, 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 EntityMetadataWrapper
di 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
uri
ada di sana dengan file_entity.