Tengo un objeto de nodo con un campo de imagen llamado field_image
. Cuando lo hago
$node
->get('field_image')
->first()
->getValue()
Obtengo una matriz con algunas propiedades en lugar del objeto de entidad. La matriz se ve así:
'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
¿Tengo que cargar manualmente la entidad de archivo usando target_id
o hay una manera de obtener automáticamente el objeto de entidad referenciado de la instancia de Drupal\image\Plugin\Field\FieldType\ImageItem
?
¿Por qué la entidad referenciada no es accesible a través de getter? Podría tener una carga lenta si no está disponible de inmediato.
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
. Sin embargo $node->get('imagefield')->referencedEntities()
funciona gracias al hecho de que $node->get('imagefield')
devuelve la instancia de la EntityReferenceFieldItemList
cual implementa el referencedEntities()
método. Por lo tanto, su solución es solo parcial: funciona para listas pero no para campos individuales.