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]->fileużyciu powyższego kodu, widzę te:
- fid
- imię
- mim
- rozmiar
- adres URL
- znak czasu
- właściciel
Co najważniejsze, uribrakuje, a na jego miejscu znajduje się urlwł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 EntityMetadataWrapperna 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ł
urijest tam z file_entity.