function ViewListBuilder::getDisplaysList

Same name and namespace in other branches
  1. 9 core/modules/views_ui/src/ViewListBuilder.php \Drupal\views_ui\ViewListBuilder::getDisplaysList()
  2. 8.9.x core/modules/views_ui/src/ViewListBuilder.php \Drupal\views_ui\ViewListBuilder::getDisplaysList()
  3. 11.x core/modules/views_ui/src/ViewListBuilder.php \Drupal\views_ui\ViewListBuilder::getDisplaysList()

Gets a list of displays included in the view.

Parameters

\Drupal\Core\Entity\EntityInterface $view: The view entity instance to get a list of displays for.

Return value

array An array of display types that this view includes.

1 call to ViewListBuilder::getDisplaysList()
ViewListBuilder::buildRow in core/modules/views_ui/src/ViewListBuilder.php
Builds a row for an entity in the entity listing.

File

core/modules/views_ui/src/ViewListBuilder.php, line 252

Class

ViewListBuilder
Defines a class to build a listing of view entities.

Namespace

Drupal\views_ui

Code

protected function getDisplaysList(EntityInterface $view) {
  $displays = [];
  $executable = $view->getExecutable();
  $executable->initDisplay();
  foreach ($executable->displayHandlers as $display) {
    $rendered_path = FALSE;
    $definition = $display->getPluginDefinition();
    if (!empty($definition['admin'])) {
      if ($display->hasPath()) {
        $path = $display->getPath();
        if ($view->status() && !str_contains($path, '%')) {
          // Wrap this in a try/catch as trying to generate links to some
          // routes may throw an exception, for example if they do not
          // respond to HTML, such as RESTExports.
          try {
            // @todo Views should expect and store a leading /. See:
            //   https://www.drupal.org/node/2423913
            $rendered_path = Link::fromTextAndUrl('/' . $path, Url::fromUserInput('/' . $path))->toString();
          } catch (BadRequestException|NotAcceptableHttpException $e) {
            $rendered_path = '/' . $path;
          }
        }
        else {
          $rendered_path = '/' . $path;
        }
      }
      $displays[] = [
        'display' => $definition['admin'],
        'path' => $rendered_path,
      ];
    }
  }
  sort($displays);
  return $displays;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.