vendor/symfony/ux-autocomplete/src/AutocompleteResultsExecutor.php line 33

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\UX\Autocomplete;
  11. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  12. use Symfony\Component\Security\Core\Security;
  13. use Symfony\UX\Autocomplete\Doctrine\DoctrineRegistryWrapper;
  14. /**
  15.  * @author Ryan Weaver <ryan@symfonycasts.com>
  16.  *
  17.  * @experimental
  18.  */
  19. final class AutocompleteResultsExecutor
  20. {
  21.     public function __construct(
  22.         private DoctrineRegistryWrapper $managerRegistry,
  23.         private ?Security $security null
  24.     ) {
  25.     }
  26.     public function fetchResults(EntityAutocompleterInterface $autocompleterstring $query): array
  27.     {
  28.         if ($this->security && !$autocompleter->isGranted($this->security)) {
  29.             throw new AccessDeniedException('Access denied from autocompleter class.');
  30.         }
  31.         $queryBuilder $autocompleter->createFilteredQueryBuilder(
  32.             $this->managerRegistry->getRepository($autocompleter->getEntityClass()),
  33.             $query
  34.         );
  35.         // if no max is set, set one
  36.         if (!$queryBuilder->getMaxResults()) {
  37.             $queryBuilder->setMaxResults(10);
  38.         }
  39.         $entities $queryBuilder->getQuery()->execute();
  40.         $results = [];
  41.         foreach ($entities as $entity) {
  42.             $results[] = [
  43.                 'value' => $autocompleter->getValue($entity),
  44.                 'text' => $autocompleter->getLabel($entity),
  45.             ];
  46.         }
  47.         return $results;
  48.     }
  49. }