You are here

public function ConfigSplitEntityViewBuilder::viewMultiple in Configuration Split 8

Same name and namespace in other branches
  1. 2.0.x src/ConfigSplitEntityViewBuilder.php \Drupal\config_split\ConfigSplitEntityViewBuilder::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 EntityViewBuilder::viewMultiple

File

src/ConfigSplitEntityViewBuilder.php, line 33

Class

ConfigSplitEntityViewBuilder
EntityViewBuilder for Config Split entities.

Namespace

Drupal\config_split

Code

public function viewMultiple(array $entities = [], $view_mode = 'full', $langcode = NULL) {

  /** @var \Drupal\config_split\Entity\ConfigSplitEntityInterface[] $entities */
  $build = [];
  foreach ($entities as $entity_id => $entity) {

    /** @var \Drupal\config_split\Plugin\ConfigFilter\SplitFilter $filter */
    $filter = $this->filterPluginManager
      ->getFilterInstance('config_split:' . $entity
      ->id());

    // @todo: make this prettier.
    $build[$entity_id] = [
      'complete' => [
        '#type' => 'container',
        'title' => [
          '#type' => 'html_tag',
          '#tag' => 'h3',
          '#value' => $this
            ->t('Complete Split Config'),
        ],
        'items' => [
          '#theme' => 'item_list',
          '#items' => $filter
            ->getBlacklist(),
          '#list_type' => 'ul',
        ],
      ],
      'conditional' => [
        '#type' => 'container',
        'title' => [
          '#type' => 'html_tag',
          '#tag' => 'h3',
          '#value' => $this
            ->t('Conditional Split Config'),
        ],
        'items' => [
          '#theme' => 'item_list',
          '#items' => $filter
            ->getGraylist(),
          '#list_type' => 'ul',
        ],
      ],
      '#cache' => [
        'tags' => $entity
          ->getCacheTags(),
      ],
    ];
  }
  return $build;
}