Tôi có một đối tượng nút với trường hình ảnh được đặt tên field_image
. Khi tôi làm
$node
->get('field_image')
->first()
->getValue()
Tôi nhận được mảng với một số thuộc tính thay vì đối tượng thực thể. Mảng trông như thế này:
'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
Tôi có phải tải dữ liệu thực thể tệp bằng cách sử dụng không target_id
hoặc có cách nào để tự động nhận đối tượng thực thể được tham chiếu từ thể hiện của Drupal\image\Plugin\Field\FieldType\ImageItem
?
Tại sao thực thể được tham chiếu không thể truy cập thông qua getter? Nó có thể được tải lười biếng nếu nó không có sẵn ngay lập tức.
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
. Tuy nhiên $node->get('imagefield')->referencedEntities()
hoạt động nhờ thực tế $node->get('imagefield')
trả về EntityReferenceFieldItemList
thực hiện referencedEntities()
phương thức thực hiện . Vì vậy, giải pháp của bạn chỉ là một phần - nó hoạt động cho các danh sách nhưng không phải cho các trường đơn lẻ.