という名前の画像フィールドを持つノードオブジェクトがあります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
ますか?
参照されたエンティティにゲッター経由でアクセスできないのはなぜですか?すぐに使用できない場合は、遅延ロードされる可能性があります。
PHP Fatal error: Call to undefined method Drupal\image\Plugin\Field\FieldType\ImageItem::getTarget()
。ただし $node->get('imagefield')->referencedEntities()
、実際にメソッドを実装する$node->get('imagefield')
インスタンスを返すおかげで機能します。したがって、あなたのソリューションは部分的です-それはリストに対して機能しますが、単一のフィールドに対しては機能しません。EntityReferenceFieldItemList
referencedEntities()