web-dev-qa-db-ja.com

カスタムモジュールのノードのフィールドですべての画像URIにアクセスする方法は?

この方法でノードのフィールドのURLを取得できることはすでに知っています。

$src = file_create_url($node->get('name_of_image_field')->entity->uri->value);

問題は、私のフィールドname_of_image_fieldには複数の画像があります。 それらすべてにアクセスする方法?

5
PolGraphic

あなたはこのコードを試すことができます:

$img_urls = array();
foreach ($node->field_image as $item) {
  if ($item->entity) {
    $img_urls[] = $item->entity->url();
  }
}

その後、すべてfield_imageで利用できる画像のURL $img_urls変数。

4
MrD
$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が含まれます。

4
Jaypan

多分あなたは使うことができます:

$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 を確認してください。

0
TuWebO