You are here

public function PanelizerEntityViewBuilder::buildComponents in Panelizer 8.3

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

Builds the component fields and properties of a set of entities.

Parameters

&$build: The renderable array representing the entity content.

\Drupal\Core\Entity\EntityInterface[] $entities: The entities whose content is being built.

\Drupal\Core\Entity\Display\EntityViewDisplayInterface[] $displays: The array of entity view displays holding the display options configured for the entity components, keyed by bundle name.

string $view_mode: The view mode in which the entity is being viewed.

Overrides EntityViewBuilderInterface::buildComponents

File

src/PanelizerEntityViewBuilder.php, line 223

Class

PanelizerEntityViewBuilder
Entity view builder for entities that can be panelized.

Namespace

Drupal\panelizer

Code

public function buildComponents(array &$build, array $entities, array $displays, $view_mode) {
  $fallback_view_builder = $this
    ->getFallbackViewBuilder();
  $panelized_entities = [];
  $fallback_entities = [];

  /**
   * @var string $id
   * @var \Drupal\Core\Entity\EntityInterface $entity
   */
  foreach ($entities as $id => $entity) {
    $display = $displays[$entity
      ->bundle()];
    if ($this
      ->isPanelizerEnabled($display)) {
      $panelized_entities[$id] = $entity;
    }
    else {
      $fallback_entities[$id] = $entity;
    }
  }

  // Handle all the fallback entities first!
  if (!empty($fallback_entities)) {
    $fallback_view_builder
      ->buildComponents($build, $fallback_entities, $displays, $view_mode);
  }

  // Handle the panelized entities.
  if (!empty($panelized_entities)) {
    $this->moduleHandler
      ->invokeAll('entity_prepare_view', [
      $this->entityTypeId,
      $panelized_entities,
      $displays,
      $view_mode,
    ]);
  }
}