You are here

public function VocabularyListBuilder::render in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/taxonomy/src/VocabularyListBuilder.php \Drupal\taxonomy\VocabularyListBuilder::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 DraggableListBuilder::render

File

core/modules/taxonomy/src/VocabularyListBuilder.php, line 161

Class

VocabularyListBuilder
Defines a class to build a listing of taxonomy vocabulary entities.

Namespace

Drupal\taxonomy

Code

public function render() {
  $entities = $this
    ->load();

  // If there are not multiple vocabularies, disable dragging by unsetting the
  // weight key.
  if (count($entities) <= 1) {
    unset($this->weightKey);
  }
  $build = parent::render();

  // If the weight key was unset then the table is in the 'table' key,
  // otherwise in vocabularies. The empty message is only needed if the table
  // is possibly empty, so there is no need to support the vocabularies key
  // here.
  if (isset($build['table'])) {
    $access_control_handler = $this->entityTypeManager
      ->getAccessControlHandler('taxonomy_vocabulary');
    $create_access = $access_control_handler
      ->createAccess(NULL, NULL, [], TRUE);
    $this->renderer
      ->addCacheableDependency($build['table'], $create_access);
    if ($create_access
      ->isAllowed()) {
      $build['table']['#empty'] = t('No vocabularies available. <a href=":link">Add vocabulary</a>.', [
        ':link' => Url::fromRoute('entity.taxonomy_vocabulary.add_form')
          ->toString(),
      ]);
    }
    else {
      $build['table']['#empty'] = t('No vocabularies available.');
    }
  }
  return $build;
}