この方法でノードのフィールドのURLを取得できることはすでに知っています。
$src = file_create_url($node->get('name_of_image_field')->entity->uri->value);
問題は、私のフィールドname_of_image_field
には複数の画像があります。 それらすべてにアクセスする方法?
あなたはこのコードを試すことができます:
$img_urls = array();
foreach ($node->field_image as $item) {
if ($item->entity) {
$img_urls[] = $item->entity->url();
}
}
その後、すべてfield_image
で利用できる画像のURL $img_urls
変数。
$srcs = array();
// Loop through the Languages
foreach ($node->field_image as $items) {
// Loop through each item in each language
foreach($items as $item) {
if ($item->entity) {
// Set the path as the key, to prevent duplicates
$srcs[$item->entity->url()] = $item->entity->url();
}
}
}
$ srcsには、ノードのすべての言語に接続されたすべての画像の、Webアクセス可能な配列のURLが含まれます。
多分あなたは使うことができます:
$delta = 0;
$file_item_list = $node->field_image;
if ($file_item_list && $file_item_list->offsetExists($delta)) {
$image_url = file_create_url($file_item_list->offsetGet($delta)->get('entity')->getValue()->getFileUri());
}
詳細は Class FileFieldItemList を確認してください。