EntityViewBuilder::getBuildDefaults

protected EntityViewBuilder::getBuildDefaults(EntityInterface $entity, $view_mode)

Provides entity-specific defaults to the build process.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity for which the defaults should be provided.

string $view_mode: The view mode that should be used.

Return value

array

File

core/lib/Drupal/Core/Entity/EntityViewBuilder.php, line 145

Class

EntityViewBuilder
Base class for entity view builders.

Namespace

Drupal\Core\Entity

Code

protected function getBuildDefaults(EntityInterface $entity, $view_mode) {
  // Allow modules to change the view mode.
  $context = [];
  $this->moduleHandler()->alter('entity_view_mode', $view_mode, $entity, $context);

  $build = array(
    '#theme' => $this->entityTypeId,
    "#{$this->entityTypeId}" => $entity,
    '#view_mode' => $view_mode,
    // Collect cache defaults for this entity.
    '#cache' => array(
      'tags' => Cache::mergeTags($this->getCacheTags(), $entity->getCacheTags()),
      'contexts' => $entity->getCacheContexts(),
      'max-age' => $entity->getCacheMaxAge(),
    ),
  );

  // Cache the rendered output if permitted by the view mode and global entity
  // type configuration.
  if ($this->isViewModeCacheable($view_mode) && !$entity->isNew() && $entity->isDefaultRevision() && $this->entityType->isRenderCacheable()) {
    $build['#cache'] += array(
      'keys' => array(
        'entity_view',
        $this->entityTypeId,
        $entity->id(),
        $view_mode,
      ),
      'bin' => $this->cacheBin,
    );

    if ($entity instanceof TranslatableInterface && count($entity->getTranslationLanguages()) > 1) {
      $build['#cache']['keys'][] = $entity->language()->getId();
    }
  }

  return $build;
}
doc_Drupal
2016-10-29 09:08:45
Comments
Leave a Comment

Please login to continue.