Przechwytywanie obiektów plików związanych z węzłami przez pole jest łatwe przy użyciu EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
To wspaniale. Chcę jednak użyć niektórych właściwości standardowego obiektu pliku i nie są one dostępne. Kiedy patrzę na właściwości dostępne przy $images[0]->file
użyciu powyższego kodu, widzę te:
- fid
- imię
- mim
- rozmiar
- adres URL
- znak czasu
- właściciel
Co najważniejsze, uri
brakuje, a na jego miejscu znajduje się url
właściwość, która jest pełnym zewnętrznym adresem URL pliku obrazu. Chcę manipulować tymi obrazami za pomocą ich identyfikatora URI (twórz kciuki itp.), Więc zostawiam to:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Co wydaje się negować cały sens używania EntityMetadataWrapper
na pierwszym miejscu.
czego mi brakuje? Gdzie jest URI na zawiniętym obiekcie pliku? Jeśli nie jest dostępny, z miłości do wszystkich rzeczy dobrych i czystych, dlaczego nie ?!
Wiem, że mogę zdekonstruować adres URL z powrotem do identyfikatora URI, ale to również wydaje się bardzo niepotrzebne.
hook_entity_property_info_alter()
”, to w porządku, chciałem tylko wiedzieć
entity_metadata_system_entity_property_info()
, w którym wkracza szereg nowych właściwości $info['file']['properties']
. Jestem gotów się założyć, że jeśli plik_entity tam był, to tablica miałaby już same właściwości encji. Postaram się napisać odpowiedź później lub jutro, jeśli nikt już tego nie zrobił
uri
jest tam z file_entity.