Получение файловых объектов, связанных с узлами, через поле легко с помощью EntityMetadataWrapper:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
Ну и замечательно. Однако я хочу использовать некоторые свойства стандартного файлового объекта, и они недоступны. Когда я смотрю на свойства, доступные при $images[0]->fileиспользовании приведенного выше кода, я вижу это:
- шлагтов
- название
- мим
- размер
- URL
- отметка времени
- владелец
В частности, uriотсутствует, и на его месте есть urlсвойство, которое является полный внешний URL-адрес файла изображения. Я хочу манипулировать этими изображениями через их URI (создавать большие пальцы и т. Д.), Поэтому мне осталось сделать это:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
Что, кажется, сводит на нет весь смысл использования EntityMetadataWrapperв первую очередь.
Что мне не хватает? Где находится URI в обернутом файловом объекте? Если это не доступно, ради любви ко всему хорошему и чистому, почему бы и нет ?!
Я знаю, что могу деконструировать URL обратно в URI, но это также кажется очень ненужным.
hook_entity_property_info_alter()», то это хорошо, просто хотел знать
entity_metadata_system_entity_property_info()это набор новых свойств $info['file']['properties']. Я готов поспорить, если бы file_entity был там, в этом массиве уже были бы свойства сущности. Я постараюсь написать ответ позже или завтра, если никто еще не сделал этого
uriесть с file_entity.