You are here

abstract class ViewsDisplayBase in Search API 8

Provides a base class for Views displays.

Hierarchy

Expanded class hierarchy of ViewsDisplayBase

File

src/Plugin/search_api/display/ViewsDisplayBase.php, line 12

Namespace

Drupal\search_api\Plugin\search_api\display
View source
abstract class ViewsDisplayBase extends DisplayPluginBase {

  /**
   * The current route match service.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface|null
   */
  protected $currentRouteMatch;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {

    /** @var static $display */
    $display = parent::create($container, $configuration, $plugin_id, $plugin_definition);
    $display
      ->setCurrentRouteMatch($container
      ->get('current_route_match'));
    return $display;
  }

  /**
   * Retrieves the current route match service.
   *
   * @return \Drupal\Core\Routing\RouteMatchInterface
   *   The current route match service.
   */
  public function getCurrentRouteMatch() {
    return $this->currentRouteMatch ?: \Drupal::routeMatch();
  }

  /**
   * Sets the current route match service.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
   *   The new current route match service.
   *
   * @return $this
   */
  public function setCurrentRouteMatch(RouteMatchInterface $current_route_match) {
    $this->currentPath = $current_route_match;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function getPath() {
    $path = parent::getPath();

    // Recreating a link when a contextual filter is used in the display's path
    // is not possible. So instead we return NULL, which forces most
    // implementations to use the current request's path instead.
    if (strpos($path, '%') !== FALSE) {
      return NULL;
    }
    return $path;
  }

  /**
   * {@inheritdoc}
   */
  public function isRenderedInCurrentRequest() {
    $plugin_definition = $this
      ->getPluginDefinition();
    $current_route = $this
      ->getCurrentRouteMatch();
    $view_id = $current_route
      ->getParameter('view_id');
    $display_id = $current_route
      ->getParameter('display_id');
    return $view_id === $plugin_definition['view_id'] && $display_id === $plugin_definition['view_display'];
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();
    $view = $this
      ->getView();
    $dependencies[$view
      ->getConfigDependencyKey()][] = $view
      ->getConfigDependencyName();
    return $dependencies;
  }

  /**
   * Retrieves the view this search display is based on.
   *
   * @returns \Drupal\views\ViewEntityInterface
   */
  protected function getView() {
    $plugin_definition = $this
      ->getPluginDefinition();
    return $this
      ->getEntityTypeManager()
      ->getStorage('view')
      ->load($plugin_definition['view_id']);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
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 1
DependencySerializationTrait::__wakeup public function 2
DisplayPluginBase::$currentPath protected property The current path service.
DisplayPluginBase::$entityTypeManager protected property The entity type manager.
DisplayPluginBase::getCurrentPath public function Retrieves the current path service.
DisplayPluginBase::getDescription public function Returns the display description. Overrides DisplayInterface::getDescription
DisplayPluginBase::getEntityTypeManager public function Retrieves the entity type manager.
DisplayPluginBase::getIndex public function Returns the index used by this display. Overrides DisplayInterface::getIndex
DisplayPluginBase::getUrl public function Returns the URL of this display. Overrides DisplayInterface::getUrl
DisplayPluginBase::label public function Returns the display label. Overrides DisplayInterface::label
DisplayPluginBase::setCurrentPath public function Sets the current path service.
DisplayPluginBase::setEntityTypeManager public function Sets the entity type manager.
HideablePluginBase::isHidden public function Determines whether this plugin should be hidden in the UI. Overrides HideablePluginInterface::isHidden 1
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
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.
ViewsDisplayBase::$currentRouteMatch protected property The current route match service.
ViewsDisplayBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DisplayPluginBase::calculateDependencies
ViewsDisplayBase::create public static function Creates an instance of the plugin. Overrides DisplayPluginBase::create
ViewsDisplayBase::getCurrentRouteMatch public function Retrieves the current route match service.
ViewsDisplayBase::getPath public function Returns the base path used by this display. Overrides DisplayPluginBase::getPath
ViewsDisplayBase::getView protected function Retrieves the view this search display is based on.
ViewsDisplayBase::isRenderedInCurrentRequest public function Returns true if the display is being rendered in the current request. Overrides DisplayPluginBase::isRenderedInCurrentRequest 1
ViewsDisplayBase::setCurrentRouteMatch public function Sets the current route match service.