class PathPluginBase

Same name and namespace in other branches
  1. 11.x core/modules/views/src/Plugin/views/display/PathPluginBase.php \Drupal\views\Plugin\views\display\PathPluginBase
  2. 10 core/modules/views/src/Plugin/views/display/PathPluginBase.php \Drupal\views\Plugin\views\display\PathPluginBase
  3. 9 core/modules/views/src/Plugin/views/display/PathPluginBase.php \Drupal\views\Plugin\views\display\PathPluginBase
  4. 8.9.x core/modules/views/src/Plugin/views/display/PathPluginBase.php \Drupal\views\Plugin\views\display\PathPluginBase

The base display plugin for path/callbacks. This is used for pages and feeds.

Hierarchy

Expanded class hierarchy of PathPluginBase

See also

\Drupal\views\EventSubscriber\RouteSubscriber

4 files declare their use of PathPluginBase
DisplayLink.php in core/modules/views/src/Plugin/views/area/DisplayLink.php
PathPluginBaseStub.php in core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseStub.php
PathPluginBaseTest.php in core/modules/views/tests/src/Unit/Plugin/display/PathPluginBaseTest.php
RestExport.php in core/modules/rest/src/Plugin/views/display/RestExport.php

File

core/modules/views/src/Plugin/views/display/PathPluginBase.php, line 23

Namespace

Drupal\views\Plugin\views\display
View source
abstract class PathPluginBase extends DisplayPluginBase implements DisplayRouterInterface, DisplayMenuInterface {
  
  /**
   * The route provider.
   *
   * @var \Drupal\Core\Routing\RouteProviderInterface
   */
  protected $routeProvider;
  
  /**
   * The state key value store.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  protected $state;
  
  /**
   * Constructs a PathPluginBase object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin ID for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
   *   The route provider.
   * @param \Drupal\Core\State\StateInterface $state
   *   The state key value store.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->routeProvider = $route_provider;
    $this->state = $state;
  }
  
  /**
   * {@inheritdoc}
   */
  public function hasPath() {
    return TRUE;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getPath() {
    $bits = explode('/', $this->getOption('path'));
    if ($this->isDefaultTabPath()) {
      array_pop($bits);
    }
    return implode('/', $bits);
  }
  
  /**
   * Determines if this display's path is a default tab.
   *
   * @return bool
   *   TRUE if the display path is for a default tab, FALSE otherwise.
   */
  protected function isDefaultTabPath() {
    $menu = $this->getOption('menu');
    $tab_options = $this->getOption('tab_options');
    return $menu && $menu['type'] == 'default tab' && !empty($tab_options['type']) && $tab_options['type'] != 'none';
  }
  
  /**
   * Overrides view display plugin base.
   *
   * Overrides display plugin definition options with
   * \Drupal\views\Plugin\views\display\DisplayPluginBase:defineOptions().
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['path'] = [
      'default' => '',
    ];
    $options['route_name'] = [
      'default' => '',
    ];
    return $options;
  }
  
  /**
   * Generates a route entry for a given view and display.
   *
   * @param string $view_id
   *   The ID of the view.
   * @param string $display_id
   *   The current display ID.
   *
   * @return \Symfony\Component\Routing\Route
   *   The route for the view.
   */
  protected function getRoute($view_id, $display_id) {
    $defaults = [
      '_controller' => 'Drupal\\views\\Routing\\ViewPageController::handle',
      '_title_callback' => 'Drupal\\views\\Routing\\ViewPageController::getTitle',
      'view_id' => $view_id,
      'display_id' => $display_id,
      '_view_display_show_admin_links' => $this->getOption('show_admin_links'),
    ];
    // @todo How do we apply argument validation?
    $path = $this->getOption('path');
    // @todo Figure out validation/argument loading.
    // Replace % with %views_arg for menu autoloading and add to the
    // page arguments so the argument actually comes through.
    $arg_counter = 0;
    $argument_ids = array_keys((array) $this->getOption('arguments'));
    $total_arguments = count($argument_ids);
    $argument_map = [];
    $bits = [];
    if (is_string($path)) {
      $bits = explode('/', $path);
      // Replace arguments in the views UI (defined via %) with parameters in
      // routes (defined via {}). As a name for the parameter use arg_$key, so
      // it can be pulled in the views controller from the request.
      foreach ($bits as $pos => $bit) {
        if ($bit == '%') {
          // Generate the name of the parameter using the key of the argument
          // handler.
          $arg_id = 'arg_' . $arg_counter++;
          $bits[$pos] = '{' . $arg_id . '}';
          $argument_map[$arg_id] = $arg_id;
        }
        elseif (str_starts_with($bit, '%')) {
          // Use the name defined in the path.
          $parameter_name = substr($bit, 1);
          $arg_id = 'arg_' . $arg_counter++;
          $argument_map[$arg_id] = $parameter_name;
          $bits[$pos] = '{' . $parameter_name . '}';
        }
      }
    }
    // Add missing arguments not defined in the path, but added as handler.
    while ($total_arguments - $arg_counter > 0) {
      $arg_id = 'arg_' . $arg_counter++;
      $bit = '{' . $arg_id . '}';
      // In contrast to the previous loop add the defaults here, as % was not
      // specified, which means the argument is optional.
      $defaults[$arg_id] = NULL;
      $argument_map[$arg_id] = $arg_id;
      $bits[] = $bit;
    }
    // If this is to be a default tab, create the route for the parent path.
    if ($this->isDefaultTabPath()) {
      $bit = array_pop($bits);
      if (empty($bits)) {
        $bits[] = $bit;
      }
    }
    $route_path = '/' . implode('/', $bits);
    $route = new Route($route_path, $defaults);
    // Add access check parameters to the route.
    $access_plugin = $this->getPlugin('access');
    if (!isset($access_plugin)) {
      // @todo Do we want to support a default plugin in getPlugin itself?
      $access_plugin = \Drupal::service('plugin.manager.views.access')->createInstance('none');
    }
    $access_plugin->alterRouteDefinition($route);
    // Set the argument map, in order to support named parameters.
    $route->setOption('_view_argument_map', $argument_map);
    $route->setOption('_view_display_plugin_id', $this->getPluginId());
    $route->setOption('_view_display_plugin_class', static::class);
    $route->setOption('_view_display_show_admin_links', $this->getOption('show_admin_links'));
    // Store whether the view will return a response.
    $route->setOption('returns_response', !empty($this->getPluginDefinition()['returns_response']));
    // Symfony 4 requires that UTF-8 route patterns have the "utf8" option set.
    $route->setOption('utf8', TRUE);
    return $route;
  }
  
  /**
   * {@inheritdoc}
   */
  public function collectRoutes(RouteCollection $collection) {
    $view_id = $this->view->storage
      ->id();
    $display_id = $this->display['id'];
    $route = $this->getRoute($view_id, $display_id);
    if (!$route_name = $this->getOption('route_name')) {
      $route_name = "view.{$view_id}.{$display_id}";
    }
    $collection->add($route_name, $route);
    return [
      "{$view_id}.{$display_id}" => $route_name,
    ];
  }
  
  /**
   * Determines whether the view overrides the given route.
   *
   * @param string $view_path
   *   The path of the view.
   * @param \Symfony\Component\Routing\Route $view_route
   *   The route of the view.
   * @param \Symfony\Component\Routing\Route $route
   *   The route itself.
   *
   * @return bool
   *   TRUE, when the view should override the given route.
   */
  protected function overrideApplies($view_path, Route $view_route, Route $route) {
    return (!$route->hasRequirement('_format') || $route->getRequirement('_format') === 'html') && $this->overrideAppliesPathAndMethod($view_path, $view_route, $route);
  }
  
  /**
   * Determines whether an override for the path and method should happen.
   *
   * @param string $view_path
   *   The path of the view.
   * @param \Symfony\Component\Routing\Route $view_route
   *   The route of the view.
   * @param \Symfony\Component\Routing\Route $route
   *   The route itself.
   *
   * @return bool
   *   TRUE, when the view should override the given route.
   */
  protected function overrideAppliesPathAndMethod($view_path, Route $view_route, Route $route) {
    // Find all paths which match the path of the current display.
    $route_path = RouteCompiler::getPathWithoutDefaults($route);
    $route_path = RouteCompiler::getPatternOutline($route_path);
    // Ensure that we don't override a route which is already controlled by
    // views.
    return !$route->hasDefault('view_id') && '/' . $view_path == $route_path && (!$route->getMethods() || in_array('GET', $route->getMethods()));
  }
  
  /**
   * {@inheritdoc}
   */
  public function alterRoutes(RouteCollection $collection) {
    $view_route_names = [];
    $view_path = $this->getPath();
    $view_id = $this->view->storage
      ->id();
    $display_id = $this->display['id'];
    $view_route = $this->getRoute($view_id, $display_id);
    foreach ($collection->all() as $name => $route) {
      if ($this->overrideApplies($view_path, $view_route, $route)) {
        $parameters = $route->compile()
          ->getPathVariables();
        // @todo Figure out whether we need to merge some settings (like
        // requirements).
        // Replace the existing route with a new one based on views.
        $original_route = $collection->get($name);
        $collection->remove($name);
        $path = $view_route->getPath();
        // Replace the path with the original parameter names and add a mapping.
        $argument_map = [];
        // We assume that the numeric ids of the parameters match the one from
        // the view argument handlers.
        foreach ($parameters as $position => $parameter_name) {
          $path = str_replace('{arg_' . $position . '}', '{' . $parameter_name . '}', $path);
          $argument_map['arg_' . $position] = $parameter_name;
        }
        // Copy the original options from the route, so for example we ensure
        // that parameter conversion options is carried over.
        $view_route->setOptions($view_route->getOptions() + $original_route->getOptions());
        if ($original_route->hasDefault('_title_callback')) {
          $view_route->setDefault('_title_callback', $original_route->getDefault('_title_callback'));
        }
        // Set the corrected path and the mapping to the route object.
        $view_route->setOption('_view_argument_map', $argument_map);
        $view_route->setPath($path);
        $collection->add($name, $view_route);
        $view_route_names[$view_id . '.' . $display_id] = $name;
      }
    }
    return $view_route_names;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getMenuLinks() {
    $links = [];
    // Replace % with the link to our standard views argument loader
    // views_arg_load -- which lives in views.module.
    $bits = explode('/', $this->getOption('path'));
    // Replace % with %views_arg for menu autoloading and add to the
    // page arguments so the argument actually comes through.
    if (in_array('%', $bits, TRUE)) {
      // If a view requires any arguments we cannot create a static menu link.
      return [];
    }
    $path = implode('/', $bits);
    $view_id = $this->view->storage
      ->id();
    $display_id = $this->display['id'];
    $view_id_display = "{$view_id}.{$display_id}";
    $menu_link_id = 'views.' . str_replace('/', '.', $view_id_display);
    if ($path) {
      $menu = $this->getOption('menu');
      if (!empty($menu['type']) && $menu['type'] == 'normal') {
        $links[$menu_link_id] = [];
        // Some views might override existing paths, so we have to set the route
        // name based upon the altering.
        $links[$menu_link_id] = [
          'route_name' => $this->getRouteName(),
          // Identify URL embedded arguments and correlate them to a handler.
'load arguments' => [
            $this->view->storage
              ->id(),
            $this->display['id'],
            '%index',
          ],
          'id' => $menu_link_id,
        ];
        $links[$menu_link_id]['title'] = $menu['title'];
        $links[$menu_link_id]['description'] = $menu['description'];
        $links[$menu_link_id]['parent'] = $menu['parent'];
        $links[$menu_link_id]['enabled'] = $menu['enabled'];
        $links[$menu_link_id]['expanded'] = $menu['expanded'];
        if (isset($menu['weight'])) {
          $links[$menu_link_id]['weight'] = intval($menu['weight']);
        }
        // Insert item into the proper menu.
        $links[$menu_link_id]['menu_name'] = $menu['menu_name'];
        // Keep track of where we came from.
        $links[$menu_link_id]['metadata'] = [
          'view_id' => $view_id,
          'display_id' => $display_id,
        ];
      }
    }
    return $links;
  }
  
  /**
   * {@inheritdoc}
   */
  public function execute() {
    // Prior to this being called, the $view should already be set to this
    // display, and arguments should be set on the view.
    $this->view
      ->build();
    if (!empty($this->view->build_info['fail'])) {
      throw new NotFoundHttpException();
    }
    if (!empty($this->view->build_info['denied'])) {
      throw new AccessDeniedHttpException();
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function optionsSummary(&$categories, &$options) {
    parent::optionsSummary($categories, $options);
    $categories['page'] = [
      'title' => $this->t('Page settings'),
      'column' => 'second',
      'build' => [
        '#weight' => -10,
      ],
    ];
    $path = strip_tags($this->getOption('path'));
    if (empty($path)) {
      $path = $this->t('No path is set');
    }
    else {
      $path = '/' . $path;
    }
    $options['path'] = [
      'category' => 'page',
      'title' => $this->t('Path'),
      'value' => Unicode::truncate($path, 24, FALSE, TRUE),
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    parent::buildOptionsForm($form, $form_state);
    switch ($form_state->get('section')) {
      case 'path':
        $form['#title'] .= $this->t('The menu path or URL of this view');
        $form['path'] = [
          '#type' => 'textfield',
          '#title' => $this->t('Path'),
          '#description' => $this->t('This view will be displayed by visiting this path on your site. You may use "%" or named route parameters like "%node" in your URL to represent values that will be used for contextual filters: For example, "node/%node/feed" or "view_path/%". Named route parameters are required when this path matches an existing path. For example, paths such as "taxonomy/term/%taxonomy_term" or "user/%user/custom-view".'),
          '#default_value' => $this->getOption('path'),
          '#field_prefix' => '<span dir="ltr">' . Url::fromRoute('<none>', [], [
            'absolute' => TRUE,
          ])->toString() . '</span>&lrm;',
          '#attributes' => [
            'dir' => LanguageInterface::DIRECTION_LTR,
          ],
          // Account for the leading backslash.
'#maxlength' => 254,
        ];
        break;

    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function validateOptionsForm(&$form, FormStateInterface $form_state) {
    parent::validateOptionsForm($form, $form_state);
    if ($form_state->get('section') == 'path') {
      $errors = $this->validatePath($form_state->getValue('path'));
      foreach ($errors as $error) {
        $form_state->setError($form['path'], $error);
      }
      // Automatically remove '/' and trailing whitespace from path.
      $form_state->setValue('path', trim($form_state->getValue('path'), '/ '));
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function submitOptionsForm(&$form, FormStateInterface $form_state) {
    parent::submitOptionsForm($form, $form_state);
    if ($form_state->get('section') == 'path') {
      $this->setOption('path', $form_state->getValue('path'));
    }
  }
  
  /**
   * Validates the path of the display.
   *
   * @param string $path
   *   The path to validate.
   *
   * @return array
   *   A list of error strings.
   */
  protected function validatePath($path) {
    $errors = [];
    if (str_starts_with($path, '%')) {
      $errors[] = $this->t('"%" may not be used for the first segment of a path.');
    }
    $parsed_url = UrlHelper::parse($path);
    if (empty($parsed_url['path'])) {
      $errors[] = $this->t('Path is empty.');
    }
    if (!empty($parsed_url['query'])) {
      $errors[] = $this->t('No query allowed.');
    }
    if (!parse_url('internal:/' . $path)) {
      $errors[] = $this->t('Invalid path. Valid characters are alphanumerics as well as "-", ".", "_" and "~".');
    }
    $path_sections = explode('/', $path);
    // Symfony routing does not allow to use numeric placeholders.
    // @see \Symfony\Component\Routing\RouteCompiler
    $numeric_placeholders = array_filter($path_sections, function ($section) {
      return preg_match('/^%(.*)/', $section, $matches) && is_numeric($matches[1]);
    });
    if (!empty($numeric_placeholders)) {
      $errors[] = $this->t("Numeric placeholders may not be used. Use plain placeholders (%).");
    }
    return $errors;
  }
  
  /**
   * {@inheritdoc}
   */
  public function validate() {
    $errors = parent::validate();
    $errors += $this->validatePath($this->getOption('path'));
    return $errors;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getUrlInfo() {
    return Url::fromRoute($this->getRouteName());
  }
  
  /**
   * {@inheritdoc}
   */
  public function getRouteName() {
    $view_id = $this->view->storage
      ->id();
    $display_id = $this->display['id'];
    $view_route_key = "{$view_id}.{$display_id}";
    // Check for overridden route names.
    $view_route_names = $this->getAlteredRouteNames();
    return $view_route_names[$view_route_key] ?? "view.{$view_route_key}";
  }
  
  /**
   * {@inheritdoc}
   */
  public function getAlteredRouteNames() {
    return $this->state
      ->get('views.view_route_names', []);
  }
  
  /**
   * {@inheritdoc}
   */
  public function remove() {
    $menu_links = $this->getMenuLinks();
    /** @var \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager */
    $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
    foreach ($menu_links as $menu_link_id => $menu_link) {
      $menu_link_manager->removeDefinition("views_view:{$menu_link_id}");
    }
  }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
AutowiredInstanceTrait::createInstanceAutowired public static function Instantiates a new instance of the implementing class using autowiring.
AutowiredInstanceTrait::getAutowireArguments private static function Resolves arguments for a method using autowiring.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
DependencyTrait::$dependencies protected property The object&#039;s dependencies.
DependencyTrait::addDependencies protected function Adds multiple dependencies.
DependencyTrait::addDependency protected function Adds a dependency.
DisplayPluginBase::$default_display public property The default display.
DisplayPluginBase::$display public property The display information coming directly from the view entity.
DisplayPluginBase::$extenders protected property Stores all available display extenders.
DisplayPluginBase::$handlers public property A multi-dimensional array of instantiated handlers used in this display.
DisplayPluginBase::$has_exposed public property Keeps track whether the display uses exposed filters.
DisplayPluginBase::$output public property Stores the rendered output of the display.
DisplayPluginBase::$plugins protected property An array of instantiated plugins used in this display.
DisplayPluginBase::$usesAJAX protected property Whether the display allows the use of AJAX or not. 2
DisplayPluginBase::$usesAreas protected property Whether the display allows area plugins. 2
DisplayPluginBase::$usesAttachments protected property Whether the display allows attachments. 6
DisplayPluginBase::$usesMore protected property Whether the display allows the use of a &#039;more&#039; link or not. 1
DisplayPluginBase::$usesOptions protected property Overrides PluginBase::$usesOptions 1
DisplayPluginBase::$usesPager protected property Whether the display allows the use of a pager or not. 4
DisplayPluginBase::$view public property The top object of a view. Overrides PluginBase::$view
DisplayPluginBase::acceptAttachments public function Overrides DisplayPluginInterface::acceptAttachments
DisplayPluginBase::access public function Overrides DisplayPluginInterface::access
DisplayPluginBase::ajaxEnabled public function Overrides DisplayPluginInterface::ajaxEnabled
DisplayPluginBase::applyDisplayCacheabilityMetadata protected function Applies the cacheability of the current display to the given render array.
DisplayPluginBase::attachTo public function Overrides DisplayPluginInterface::attachTo 2
DisplayPluginBase::buildBasicRenderable public static function Overrides DisplayPluginInterface::buildBasicRenderable 1
DisplayPluginBase::buildRenderable public function Overrides DisplayPluginInterface::buildRenderable 1
DisplayPluginBase::buildRenderingLanguageOptions protected function Returns the available rendering strategies for language-aware entities.
DisplayPluginBase::calculateCacheMetadata public function Overrides DisplayPluginInterface::calculateCacheMetadata
DisplayPluginBase::calculateDependencies public function Overrides PluginBase::calculateDependencies 2
DisplayPluginBase::defaultableSections public function Overrides DisplayPluginInterface::defaultableSections 1
DisplayPluginBase::destroy public function Overrides PluginBase::destroy
DisplayPluginBase::displaysExposed public function Overrides DisplayPluginInterface::displaysExposed 2
DisplayPluginBase::elementPreRender public function Overrides DisplayPluginInterface::elementPreRender
DisplayPluginBase::getAllHandlers protected function Gets all the handlers used by the display.
DisplayPluginBase::getAllPlugins protected function Gets all the plugins used by the display.
DisplayPluginBase::getArgumentsTokens public function Overrides DisplayPluginInterface::getArgumentsTokens
DisplayPluginBase::getArgumentText public function Overrides DisplayPluginInterface::getArgumentText 1
DisplayPluginBase::getAttachedDisplays public function Overrides DisplayPluginInterface::getAttachedDisplays
DisplayPluginBase::getCacheMetadata public function Overrides DisplayPluginInterface::getCacheMetadata
DisplayPluginBase::getExtenders public function Overrides DisplayPluginInterface::getExtenders
DisplayPluginBase::getFieldLabels public function Overrides DisplayPluginInterface::getFieldLabels
DisplayPluginBase::getHandler public function Overrides DisplayPluginInterface::getHandler
DisplayPluginBase::getHandlers public function Overrides DisplayPluginInterface::getHandlers
DisplayPluginBase::getLinkDisplay public function Overrides DisplayPluginInterface::getLinkDisplay
DisplayPluginBase::getMoreUrl protected function Get the more URL for this view.
DisplayPluginBase::getOption public function Overrides DisplayPluginInterface::getOption
DisplayPluginBase::getPagerText public function Overrides DisplayPluginInterface::getPagerText 1
DisplayPluginBase::getPlugin public function Overrides DisplayPluginInterface::getPlugin
DisplayPluginBase::getRoutedDisplay public function Overrides DisplayPluginInterface::getRoutedDisplay
DisplayPluginBase::getSpecialBlocks public function Overrides DisplayPluginInterface::getSpecialBlocks
DisplayPluginBase::getType public function Overrides DisplayPluginInterface::getType 4
DisplayPluginBase::getUrl public function Overrides DisplayPluginInterface::getUrl
DisplayPluginBase::initDisplay public function Overrides DisplayPluginInterface::initDisplay 1
DisplayPluginBase::isBaseTableTranslatable protected function Returns whether the base table is of a translatable entity type.
DisplayPluginBase::isDefaultDisplay public function Overrides DisplayPluginInterface::isDefaultDisplay 1
DisplayPluginBase::isDefaulted public function Overrides DisplayPluginInterface::isDefaulted
DisplayPluginBase::isEnabled public function Overrides DisplayPluginInterface::isEnabled
DisplayPluginBase::isIdentifierUnique public function Overrides DisplayPluginInterface::isIdentifierUnique
DisplayPluginBase::isMoreEnabled public function Overrides DisplayPluginInterface::isMoreEnabled
DisplayPluginBase::isPagerEnabled public function Overrides DisplayPluginInterface::isPagerEnabled
DisplayPluginBase::mergeDefaults public function Overrides DisplayPluginInterface::mergeDefaults
DisplayPluginBase::mergeHandler protected function Merges handlers default values.
DisplayPluginBase::mergePlugin protected function Merges plugins default values.
DisplayPluginBase::newDisplay public function Overrides DisplayPluginInterface::newDisplay 1
DisplayPluginBase::optionLink public function Overrides DisplayPluginInterface::optionLink
DisplayPluginBase::optionsOverride public function Overrides DisplayPluginInterface::optionsOverride
DisplayPluginBase::outputIsEmpty public function Overrides DisplayPluginInterface::outputIsEmpty
DisplayPluginBase::overrideOption public function Overrides DisplayPluginInterface::overrideOption
DisplayPluginBase::preExecute public function Overrides DisplayPluginInterface::preExecute
DisplayPluginBase::preview public function Overrides DisplayPluginInterface::preview 3
DisplayPluginBase::query public function Overrides PluginBase::query 1
DisplayPluginBase::recursiveReplaceTokens protected function Replace the query parameters recursively, both key and value.
DisplayPluginBase::render public function Overrides DisplayPluginInterface::render 3
DisplayPluginBase::renderArea public function Overrides DisplayPluginInterface::renderArea
DisplayPluginBase::renderFilters public function Overrides DisplayPluginInterface::renderFilters
DisplayPluginBase::renderMoreLink public function Overrides DisplayPluginInterface::renderMoreLink
DisplayPluginBase::renderPager public function Overrides DisplayPluginInterface::renderPager 1
DisplayPluginBase::setOption public function Overrides DisplayPluginInterface::setOption
DisplayPluginBase::setOverride public function Overrides DisplayPluginInterface::setOverride
DisplayPluginBase::trustedCallbacks public static function Overrides PluginBase::trustedCallbacks
DisplayPluginBase::useGroupBy public function Overrides DisplayPluginInterface::useGroupBy
DisplayPluginBase::useMoreAlways public function Overrides DisplayPluginInterface::useMoreAlways
DisplayPluginBase::useMoreText public function Overrides DisplayPluginInterface::useMoreText
DisplayPluginBase::usesAJAX public function Overrides DisplayPluginInterface::usesAJAX 2
DisplayPluginBase::usesAreas public function Overrides DisplayPluginInterface::usesAreas 2
DisplayPluginBase::usesAttachments public function Overrides DisplayPluginInterface::usesAttachments 6
DisplayPluginBase::usesExposed public function Overrides DisplayPluginInterface::usesExposed 3
DisplayPluginBase::usesExposedFormInBlock public function Overrides DisplayPluginInterface::usesExposedFormInBlock 1
DisplayPluginBase::usesFields public function Overrides DisplayPluginInterface::usesFields
DisplayPluginBase::usesLinkDisplay public function Overrides DisplayPluginInterface::usesLinkDisplay 1
DisplayPluginBase::usesMore public function Overrides DisplayPluginInterface::usesMore 1
DisplayPluginBase::usesPager public function Overrides DisplayPluginInterface::usesPager 4
DisplayPluginBase::viewExposedFormBlocks public function Overrides DisplayPluginInterface::viewExposedFormBlocks
MessengerTrait::$messenger protected property The messenger. 26
MessengerTrait::messenger public function Gets the messenger. 26
MessengerTrait::setMessenger public function Sets the messenger.
PathPluginBase::$routeProvider protected property The route provider.
PathPluginBase::$state protected property The state key value store.
PathPluginBase::alterRoutes public function Overrides DisplayRouterInterface::alterRoutes
PathPluginBase::buildOptionsForm public function Overrides DisplayPluginBase::buildOptionsForm 3
PathPluginBase::collectRoutes public function Overrides DisplayRouterInterface::collectRoutes 1
PathPluginBase::defineOptions protected function Overrides view display plugin base. Overrides DisplayPluginBase::defineOptions 3
PathPluginBase::execute public function Overrides DisplayPluginBase::execute 3
PathPluginBase::getAlteredRouteNames public function Overrides DisplayRouterInterface::getAlteredRouteNames
PathPluginBase::getMenuLinks public function Overrides DisplayMenuInterface::getMenuLinks
PathPluginBase::getPath public function Overrides DisplayPluginBase::getPath
PathPluginBase::getRoute protected function Generates a route entry for a given view and display. 1
PathPluginBase::getRouteName public function Overrides DisplayRouterInterface::getRouteName
PathPluginBase::getUrlInfo public function Overrides DisplayRouterInterface::getUrlInfo
PathPluginBase::hasPath public function Overrides DisplayPluginBase::hasPath
PathPluginBase::isDefaultTabPath protected function Determines if this display&#039;s path is a default tab.
PathPluginBase::optionsSummary public function Overrides DisplayPluginBase::optionsSummary 3
PathPluginBase::overrideApplies protected function Determines whether the view overrides the given route. 1
PathPluginBase::overrideAppliesPathAndMethod protected function Determines whether an override for the path and method should happen.
PathPluginBase::remove public function Overrides DisplayPluginBase::remove
PathPluginBase::submitOptionsForm public function Overrides DisplayPluginBase::submitOptionsForm 3
PathPluginBase::validate public function Overrides DisplayPluginBase::validate 1
PathPluginBase::validateOptionsForm public function Overrides DisplayPluginBase::validateOptionsForm 1
PathPluginBase::validatePath protected function Validates the path of the display.
PathPluginBase::__construct public function Constructs a PathPluginBase object. Overrides DisplayPluginBase::__construct 3
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$definition public property Plugins&#039; definition.
PluginBase::$displayHandler public property The display object this plugin is for.
PluginBase::$options public property Options for this plugin will be held here.
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin ID.
PluginBase::$position public property The handler position.
PluginBase::$renderer protected property Stores the render API renderer. 3
PluginBase::create public static function Instantiates a new instance of the implementing class using autowiring. 68
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::doFilterByDefinedOptions protected function Do the work to filter out stored options depending on the defined options.
PluginBase::filterByDefinedOptions public function Overrides ViewsPluginInterface::filterByDefinedOptions
PluginBase::getAvailableGlobalTokens public function Overrides ViewsPluginInterface::getAvailableGlobalTokens
PluginBase::getBaseId public function Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Overrides PluginInspectionInterface::getPluginDefinition 2
PluginBase::getPluginId public function Overrides PluginInspectionInterface::getPluginId
PluginBase::getProvider public function Overrides ViewsPluginInterface::getProvider
PluginBase::getRenderer protected function Returns the render API renderer. 1
PluginBase::globalTokenForm public function Overrides ViewsPluginInterface::globalTokenForm
PluginBase::globalTokenReplace public function Overrides ViewsPluginInterface::globalTokenReplace
PluginBase::INCLUDE_ENTITY constant Include entity row languages when listing languages.
PluginBase::INCLUDE_NEGOTIATED constant Include negotiated languages when listing languages.
PluginBase::init public function Overrides ViewsPluginInterface::init 6
PluginBase::listLanguages protected function Makes an array of languages, optionally including special languages.
PluginBase::pluginTitle public function Overrides ViewsPluginInterface::pluginTitle
PluginBase::preRenderAddFieldsetMarkup public static function Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup
PluginBase::preRenderFlattenData public static function Overrides ViewsPluginInterface::preRenderFlattenData
PluginBase::queryLanguageSubstitutions public static function Returns substitutions for Views queries for languages.
PluginBase::setOptionDefaults protected function Fills up the options of the plugin with defaults.
PluginBase::summaryTitle public function Overrides ViewsPluginInterface::summaryTitle 6
PluginBase::themeFunctions public function Overrides ViewsPluginInterface::themeFunctions 1
PluginBase::unpackOptions public function Overrides ViewsPluginInterface::unpackOptions
PluginBase::usesOptions public function Overrides ViewsPluginInterface::usesOptions 8
PluginBase::viewsTokenReplace protected function Replaces Views&#039; tokens in a given string. 1
PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT constant Query string to indicate the site default language.
PluginDependencyTrait::calculatePluginDependencies protected function Calculates and adds dependencies of a specific plugin instance. 1
PluginDependencyTrait::getPluginDependencies protected function Calculates and returns dependencies of a specific plugin instance.
PluginDependencyTrait::moduleHandler protected function Wraps the module handler. 1
PluginDependencyTrait::themeHandler protected function Wraps the theme handler. 1
StringTranslationTrait::$stringTranslation protected property The string translation service. 3
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language. 1
TrustedCallbackInterface::THROW_EXCEPTION constant Untrusted callbacks throw exceptions.
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION constant Untrusted callbacks trigger silenced E_USER_DEPRECATION errors.
ViewsFormHelperTrait::buildFormUrl protected function Creates the menu path for a standard AJAX form given the form state.
ViewsFormHelperTrait::formButtonWasClicked public static function The #process callback for a button.
ViewsFormHelperTrait::getConfigFactory protected function Returns the config factory service.
ViewsFormHelperTrait::standardDisplayDropdown protected function Adds an element to select either the default or the current display.

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