Mam obiekt węzła o nazwie pola obrazu field_image
. Kiedy robię
$node
->get('field_image')
->first()
->getValue()
Dostaję tablicę z pewnymi właściwościami zamiast obiektu encji. Tablica wygląda następująco:
'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
Czy muszę ręcznie ładować obiekt encji przy użyciu pliku, target_id
czy istnieje sposób na automatyczne uzyskanie obiektu encji z instancji Drupal\image\Plugin\Field\FieldType\ImageItem
?
Dlaczego przywoływany obiekt nie jest dostępny przez moduł pobierający? Może być leniwie załadowany, jeśli nie jest natychmiast dostępny.
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
. $node->get('imagefield')->referencedEntities()
Działa jednak dzięki temu, że $node->get('imagefield')
zwraca instancję, EntityReferenceFieldItemList
która implementuje referencedEntities()
metodę. Twoje rozwiązanie jest tylko częściowe - działa na listach, ale nie na pojedynczych polach.