You are here

public function EntityDisplayModeListBuilder::render in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/field_ui/src/EntityDisplayModeListBuilder.php \Drupal\field_ui\EntityDisplayModeListBuilder::render()
  2. 9 core/modules/field_ui/src/EntityDisplayModeListBuilder.php \Drupal\field_ui\EntityDisplayModeListBuilder::render()

Builds the entity listing as renderable array for table.html.twig.

@todo Add a link to add a new item to the #empty text.

Overrides EntityListBuilder::render

File

core/modules/field_ui/src/EntityDisplayModeListBuilder.php, line 86

Class

EntityDisplayModeListBuilder
Defines a class to build a listing of view mode entities.

Namespace

Drupal\field_ui

Code

public function render() {
  $build = [];
  foreach ($this
    ->load() as $entity_type => $entities) {
    if (!isset($this->entityTypes[$entity_type])) {
      continue;
    }

    // Filter entities.
    if (!$this
      ->isValidEntity($entity_type)) {
      continue;
    }
    $table = [
      '#prefix' => '<h2>' . $this->entityTypes[$entity_type]
        ->getLabel() . '</h2>',
      '#type' => 'table',
      '#header' => $this
        ->buildHeader(),
      '#rows' => [],
    ];
    foreach ($entities as $entity) {
      if ($row = $this
        ->buildRow($entity)) {
        $table['#rows'][$entity
          ->id()] = $row;
      }
    }

    // Move content at the top.
    if ($entity_type == 'node') {
      $table['#weight'] = -10;
    }
    $short_type = str_replace([
      'entity_',
      '_mode',
    ], '', $this->entityTypeId);
    $table['#rows']['_add_new'][] = [
      'data' => [
        '#type' => 'link',
        '#url' => Url::fromRoute($short_type == 'view' ? 'entity.entity_view_mode.add_form' : 'entity.entity_form_mode.add_form', [
          'entity_type_id' => $entity_type,
        ]),
        '#title' => $this
          ->t('Add new @entity-type %label', [
          '@entity-type' => $this->entityTypes[$entity_type]
            ->getLabel(),
          '%label' => $this->entityType
            ->getSingularLabel(),
        ]),
      ],
      'colspan' => count($table['#header']),
    ];
    $build[$entity_type] = $table;
  }
  return $build;
}