You are here

public function PanelizerEntityViewBuilder::viewMultiple in Panelizer 8.4

Same name and namespace in other branches
  1. 8.5 src/PanelizerEntityViewBuilder.php \Drupal\panelizer\PanelizerEntityViewBuilder::viewMultiple()
  2. 8.3 src/PanelizerEntityViewBuilder.php \Drupal\panelizer\PanelizerEntityViewBuilder::viewMultiple()

Builds the render array for the provided entities.

Parameters

array $entities: An array of entities implementing EntityInterface to view.

string $view_mode: (optional) The view mode that should be used to render the entity.

string $langcode: (optional) For which language the entity should be rendered, defaults to the current content language.

Return value

A render array for the entities, indexed by the same keys as the entities array passed in $entities.

Throws

\InvalidArgumentException Can be thrown when the set of parameters is inconsistent, like when trying to view Comments and passing a Node which is not the one the comments belongs to, or not passing one, and having the comments node not be available for loading.

Overrides EntityViewBuilderInterface::viewMultiple

File

src/PanelizerEntityViewBuilder.php, line 280

Class

PanelizerEntityViewBuilder
Entity view builder for entities that can be panelized.

Namespace

Drupal\panelizer

Code

public function viewMultiple(array $entities = [], $view_mode = 'full', $langcode = NULL) {
  $displays = $this
    ->collectRenderDisplays($entities, $view_mode);
  $panelized_entities = [];
  $fallback_entities = [];
  foreach ($entities as $id => $entity) {
    $display = $displays[$entity
      ->bundle()];
    if ($this
      ->isPanelizerEnabled($display)) {
      $panelized_entities[$id] = $entity;
    }
    else {
      $fallback_entities[$id] = $entity;
    }
  }
  $result = [];
  if (!empty($fallback_entities)) {
    $result += $this
      ->getFallbackViewBuilder()
      ->viewMultiple($fallback_entities, $view_mode, $langcode);
  }
  if (!empty($panelized_entities)) {
    $result += $this
      ->buildMultiplePanelized($panelized_entities, $displays, $view_mode, $langcode);
  }
  return $result;
}