Ho un oggetto nodo con campo immagine chiamato field_image
. Quando io faccio
$node
->get('field_image')
->first()
->getValue()
Ottengo matrice con alcune proprietà anziché oggetto entità. L'array è simile al seguente:
'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
Devo caricare manualmente l'entità file usando target_id
o c'è un modo per ottenere automaticamente l'oggetto entità referenziato dall'istanza di Drupal\image\Plugin\Field\FieldType\ImageItem
?
Perché l'entità referenziata non è accessibile tramite getter? Potrebbe essere lento se non è disponibile immediatamente.
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
. Tuttavia $node->get('imagefield')->referencedEntities()
funziona grazie al fatto $node->get('imagefield')
restituisce istanza di EntityReferenceFieldItemList
quale implementa il referencedEntities()
metodo. Quindi la tua soluzione è solo parziale: funziona per elenchi ma non per singoli campi.