Отримати вподобання файлових об’єктів, пов’язаних із вузлами через поле, легко за допомогою 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
є там файл_entity.