devel_wizard-2.x-dev/src/Controller/AutocompleteExtensionController.php

src/Controller/AutocompleteExtensionController.php
<?php

declare(strict_types=1);

namespace Drupal\devel_wizard\Controller;

abstract class AutocompleteExtensionController extends AutocompleteBase {

  protected function getFuzzyOptions(): array {
    $options = parent::getFuzzyOptions();
    $options['keys'][] = 'name';
    $options['keys'][] = 'label';

    return $options;
  }

  abstract protected function getExtensions(): iterable;

  protected function getFuzzyDocuments(string $keyword): array {
    $documents = [];
    foreach ($this->getExtensions() as $extension) {
      $documents[] = $this->convertEntryToFuzzyDocument(['extension' => $extension]);
    }

    return $documents;
  }

  /**
   * @phpstan-param array{extension: \Drupal\Core\Extension\Extension} $entry
   */
  protected function convertEntryToFuzzyDocument(array $entry): array {
    return [
      'name' => $entry['extension']->getName(),
      'label' => $entry['extension']->info['name'],
    ];
  }

  protected function convertFuzzyResultToAutocompleteItem(array $result): array {
    return [
      'value' => $result['item']['name'],
      'label' => "{$result['item']['label']} ({$result['item']['name']})",
    ];
  }

}

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

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