src/Form/EventListener/Search/Franchise/AddFranchiseSubscriber.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Form\EventListener\Search\Franchise;
  4. use App\Entity\Franchise\Franchise;
  5. use App\Entity\Security\Administrator;
  6. use App\Entity\Security\Support;
  7. use App\Entity\Security\User;
  8. use App\Form\FormHelper;
  9. use App\Repository\Franchise\FranchiseRepository;
  10. use Doctrine\ORM\QueryBuilder;
  11. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\Form\FormEvent;
  14. use Symfony\Component\Form\FormEvents;
  15. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  16. class AddFranchiseSubscriber extends FormHelper implements EventSubscriberInterface
  17. {
  18.     public function __construct(
  19.         private TokenStorageInterface $tokenStorage,
  20.     ) {
  21.     }
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [FormEvents::PRE_SET_DATA => 'preSetData'];
  25.     }
  26.     public function preSetData(FormEvent $event): void
  27.     {
  28.         /** @var User */
  29.         $connectedUser $this->tokenStorage->getToken()->getUser();
  30.         if (!$connectedUser instanceof Administrator && !$connectedUser instanceof Support) {
  31.             return;
  32.         }
  33.         $queryBuilder = static function (FranchiseRepository $franchiseRepository): QueryBuilder {
  34.             return $franchiseRepository->createQueryBuilder('f')
  35.                 ->orderBy('f.name''ASC')
  36.             ;
  37.         };
  38.         $event->getForm()->add('franchise'EntityType::class, $this->getEntityParameters(Franchise::class, 'app.global.search.label.franchise'self::PLACEHOLDER_SAME_AS_LABELfalse, ['query_builder' => $queryBuilder]));
  39.     }
  40. }