이미지 필드가라는 노드 객체가 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
를 사용하여 파일 엔티티를 manullay로드해야 합니까? 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()