diff --git a/core/modules/views/src/Plugin/views/field/Field.php b/core/modules/views/src/Plugin/views/field/Field.php index b797de2..f9b51db 100644 --- a/core/modules/views/src/Plugin/views/field/Field.php +++ b/core/modules/views/src/Plugin/views/field/Field.php @@ -833,17 +833,19 @@ public function getItems(ResultRow $values) { // Render using the formatted data itself. $items = []; + // Each item is extracted and rendered separately, the top-level formatter + // render array itself is never rendered, so we extract its bubbleable + // metadata and add it to each child individually. + $bubbleable = BubbleableMetadata::createFromRenderArray($build_list); foreach (Element::children($build_list) as $delta) { - $items[$delta]['rendered'] = $build_list[$delta]; - // Merge the bubbleable metadata of the top-level render array into - // each child because they will most likely be rendered individually. - if (isset($build_list['#cache']) || isset($build_list['#attached']) || isset($build_list['#post_render_cache'])) { - BubbleableMetadata::createFromRenderArray($build_list) - ->merge(BubbleableMetadata::createFromRenderArray($items[$delta]['rendered'])) - ->applyTo($items[$delta]['rendered']); - } - // Add the raw field items (for use in tokens). - $items[$delta]['raw'] = $build_list['#items'][$delta]; + BubbleableMetadata::createFromRenderArray($build_list[$delta]) + ->merge($bubbleable) + ->applyTo($build_list[$delta]); + $items[$delta] = [ + 'rendered' => $build_list[$delta], + // Add the raw field items (for use in tokens). + 'raw' => $build_list['#items'][$delta], + ]; } return $items; }