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()
วิธี ดังนั้นวิธีการแก้ปัญหาของคุณเป็นเพียงบางส่วน - มันใช้งานได้กับรายการ แต่ไม่ใช่สำหรับฟิลด์เดียว