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 tahuentity_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 melakukannyauri
ada di sana dengan file_entity.Jawaban:
Terima kasih banyak kepada MPD karena menunjuk saya ke arah yang benar. Singkatnya, tanpa modul Entitas File , file bukan entitas, jadi mereka tidak secara alami memiliki 'properti' yang saya harapkan.
Modul Entity menyediakan beberapa atas nama mereka, tetapi URI bukan salah satunya. Untungnya sangat mudah untuk membuatnya tersedia menggunakan
hook_entity_property_info_alter()
dan panggilan balik properti kustom:Setelah itu,
$images[0]->file->uri->value()
tersedia sesuai yang diharapkan.sumber
Di bawah ini berfungsi tanpa peretasan:
sumber
Inilah yang berfungsi bagi saya untuk mendapatkan path lengkap dari satu gambar ...
Kalau tidak...
sumber