У мене є об’єкт вузла з іменем поля зображення field_image
. Коли я це роблю
$node
->get('field_image')
->first()
->getValue()
Я отримую масив з деякими властивостями замість об'єкта сутності. Масив виглядає так:
'target_id' => string '8' (length=1)
'alt' => string '' (length=0)
'title' => string '' (length=0)
'width' => string '587' (length=3)
'height' => string '458' (length=3)
'_loaded' => boolean true
'_accessCacheability' =>
object(Drupal\Core\Cache\CacheableMetadata)[1092]
protected 'cacheContexts' =>
array (size=0)
...
protected 'cacheTags' =>
array (size=0)
...
protected 'cacheMaxAge' => int -1
Чи потрібно завантажувати файлову сутність за допомогою маніпуляції, target_id
або є спосіб автоматично отримати об'єкт, на який посилається, об'єкт з екземпляра Drupal\image\Plugin\Field\FieldType\ImageItem
?
Чому довідник не доступний через getter? Це може бути ледачим завантаженням, якщо воно недоступне негайно.
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
. Однак $node->get('imagefield')->referencedEntities()
працює завдяки тому, що $node->get('imagefield')
повертає екземпляр, EntityReferenceFieldItemList
який реалізує referencedEntities()
метод. Тож ваше рішення є лише частковим - воно працює для списків, але не для окремих полів.