Получение файловых объектов, связанных с узлами, через поле легко с помощью 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.