You are here

abstract class DisplayPluginBase in Search API 8

Defines a base class from which other display classes may extend.

Plugins extending this class need to define a plugin definition array through annotation. The definition includes the following keys:

  • id: The unique, system-wide identifier of the display class.
  • label: Human-readable name of the display class, translated.

A complete plugin definition should be written as in this example:


@SearchApiDisplay(
  id = "my_display",
  label = @Translation("My display"),
  description = @Translation("A few words about this search display"),
  index = "search_index",
  path = "/my/custom/search",
)

Hierarchy

Expanded class hierarchy of DisplayPluginBase

See also

\Drupal\search_api\Annotation\SearchApiDisplay

\Drupal\search_api\Display\DisplayPluginManager

\Drupal\search_api\Display\DisplayInterface

Plugin API

2 files declare their use of DisplayPluginBase
TestDisplay.php in tests/search_api_test/src/Plugin/search_api/display/TestDisplay.php
ViewsDisplayBase.php in src/Plugin/search_api/display/ViewsDisplayBase.php

File

src/Display/DisplayPluginBase.php, line 36

Namespace

Drupal\search_api\Display
View source
abstract class DisplayPluginBase extends HideablePluginBase implements DisplayInterface {

  /**
   * The current path service.
   *
   * @var \Drupal\Core\Path\CurrentPathStack|null
   */
  protected $currentPath;

  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface|null
   */
  protected $entityTypeManager;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    $display = new static($configuration, $plugin_id, $plugin_definition);
    $display
      ->setCurrentPath($container
      ->get('path.current'));
    $display
      ->setEntityTypeManager($container
      ->get('entity_type.manager'));
    return $display;
  }

  /**
   * Retrieves the current path service.
   *
   * @return \Drupal\Core\Path\CurrentPathStack
   *   The current path service.
   */
  public function getCurrentPath() {
    return $this->currentPath ?: \Drupal::service('path.current');
  }

  /**
   * Sets the current path service.
   *
   * @param \Drupal\Core\Path\CurrentPathStack $current_path
   *   The new current path service.
   *
   * @return $this
   */
  public function setCurrentPath(CurrentPathStack $current_path) {
    $this->currentPath = $current_path;
    return $this;
  }

  /**
   * Retrieves the entity type manager.
   *
   * @return \Drupal\Core\Entity\EntityTypeManagerInterface
   *   The entity type manager.
   */
  public function getEntityTypeManager() {
    return $this->entityTypeManager ?: \Drupal::service('entity_type.manager');
  }

  /**
   * Sets the entity type manager.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The new entity type manager.
   *
   * @return $this
   */
  public function setEntityTypeManager(EntityTypeManagerInterface $entity_type_manager) {
    $this->entityTypeManager = $entity_type_manager;
    return $this;
  }

  /**
   * {@inheritdoc}
   */
  public function label() {
    $plugin_definition = $this
      ->getPluginDefinition();
    return $plugin_definition['label'];
  }

  /**
   * {@inheritdoc}
   */
  public function getDescription() {
    $plugin_definition = $this
      ->getPluginDefinition();
    return $plugin_definition['description'];
  }

  /**
   * {@inheritdoc}
   */
  public function getIndex() {
    $plugin_definition = $this
      ->getPluginDefinition();
    return $this
      ->getEntityTypeManager()
      ->getStorage('search_api_index')
      ->load($plugin_definition['index']);
  }

  /**
   * {@inheritdoc}
   */
  public function getUrl() {
    @trigger_error('\\Drupal\\search_api\\Display\\DisplayInterface::getUrl() is deprecated in Search API 8.x-1.0 Beta 5. Use ::getPath() instead. See https://www.drupal.org/node/2856050', E_USER_DEPRECATED);
    if ($path = $this
      ->getPath()) {
      return Url::fromUserInput($path);
    }
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getPath() {
    $plugin_definition = $this
      ->getPluginDefinition();
    if (!empty($plugin_definition['path'])) {
      return $plugin_definition['path'];
    }
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function isRenderedInCurrentRequest() {
    if ($path = $this
      ->getPath()) {
      $current_path = $this
        ->getCurrentPath()
        ->getPath();
      return $current_path == $path;
    }
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = [];

    // By default, add dependencies to the module providing this display and to
    // the index it is based on.
    $definition = $this
      ->getPluginDefinition();
    $dependencies['module'][] = $definition['provider'];
    $index = $this
      ->getIndex();
    $dependencies[$index
      ->getConfigDependencyKey()][] = $index
      ->getConfigDependencyName();
    return $dependencies;
  }

}

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::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies 1
DisplayPluginBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create 1
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::getPath public function Returns the base path used by this display. Overrides DisplayInterface::getPath 1
DisplayPluginBase::getUrl public function Returns the URL of this display. Overrides DisplayInterface::getUrl
DisplayPluginBase::isRenderedInCurrentRequest public function Returns true if the display is being rendered in the current request. Overrides DisplayInterface::isRenderedInCurrentRequest 1
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.