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']})",
];
}
}
