search_api_autocomplete-8.x-1.x-dev/src/Plugin/search_api_autocomplete/search/ViewsDeriver.php

src/Plugin/search_api_autocomplete/search/ViewsDeriver.php
<?php

namespace Drupal\search_api_autocomplete\Plugin\search_api_autocomplete\search;

use Drupal\Component\Plugin\Exception\PluginException;
use Drupal\search_api\IndexInterface;
use Drupal\search_api\Plugin\views\query\SearchApiQuery;
use Drupal\search_api_autocomplete\Search\SearchPluginDeriverBase;

/**
 * Derives a search plugin definition for every view.
 *
 * @see \Drupal\search_api_autocomplete\Plugin\search_api_autocomplete\search\Views
 */
class ViewsDeriver extends SearchPluginDeriverBase {

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {
    if (!isset($this->derivatives)) {
      $this->derivatives = [];

      try {
        /** @var \Drupal\Core\Entity\EntityStorageInterface $views_storage */
        $views_storage = $this->getEntityTypeManager()->getStorage('view');
      }
      catch (PluginException $e) {
        return $this->derivatives;
      }

      /** @var \Drupal\views\ViewEntityInterface $view */
      foreach ($views_storage->loadMultiple() as $view) {
        $index = SearchApiQuery::getIndexFromTable($view->get('base_table'));
        if (!($index instanceof IndexInterface)) {
          continue;
        }
        $this->derivatives[$view->id()] = [
          'label' => $view->label(),
          'index' => $index->id(),
        ] + $base_plugin_definition;
      }
    }

    return $this->derivatives;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc