Drupal 8に含まれる記事コンテンツタイプから画像(そのパス)を最も簡単に取得するにはどうすればよいですか?
私が持っているのは実体です。ただし、$image = $node->fields['field_image']
を使用すると、構造がすごくわかります。
画像パスを取得する簡単な方法はありませんか?また、これでURLが見つかりません。得られるのは、ある種のtarget_id(ファイルID?)です。
以前はこれを見なかった。
単一値フィールドの参照エンティティを取得する最短の方法は次のとおりです。
$node->field_image->entity->url()
デルタを明示的に指定することもできます。
$node->field_image[0]->entity->url()
これは、多くのArrayAccessおよび__get()マジックで機能します。
http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet の優れたチートシートも参照してください。および https://www.drupal.org/node/1795854 およびその他の情報ページ(詳細はまだ進行中)。
したがって、私の解決策は、nodeobjectにある "referencedEntities()"メソッドを使用することでした。これにより、反復可能なFile-objectsの配列が得られ、有効なパスを取得するためにファイルオブジェクトからメソッド「url()」を使用できます。
ノードに複数の画像がある場合、これを使用して画像のURLの配列を取得できます(他の多くの便利なものの中でスライドショーモジュールを作成するのに役立ちます)
$allImagesFound = false;
$imageUrls = array();
$numberOfImages = 0;
while(!$allImagesFound)
{
//make sure we are not calling a null value, if so then we have found all images
if($node->get('your_image_field_name')[$numberOfImages] != null) {
$imageUrls[] = $node->get('your_image_field_name')[$numberOfImages]->entity->url();
$numberOfImages++;
} else {
$allImagesFound = true;
break;
}
}
ImageUrls配列は、nodesフィールドに関連付けられた画像のすべてのURLを保持します。お役に立てれば。