src/Form/EventListener/Franchise/ExternalLink/AddExternalLinkNameFieldSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Form\EventListener\Franchise\ExternalLink;
  4. use App\Entity\Admin\ExternalLinkName;
  5. use App\Form\FormHelper;
  6. use App\Repository\Admin\ExternalLinkNameRepository;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Form\FormEvent;
  10. use Symfony\Component\Form\FormEvents;
  11. class AddExternalLinkNameFieldSubscriber extends FormHelper implements EventSubscriberInterface
  12. {
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [FormEvents::PRE_SET_DATA => 'preSetData'];
  16.     }
  17.     public function preSetData(FormEvent $event): void
  18.     {
  19.         /** @var ExternalLink $externalLink */
  20.         $externalLink $event->getData();
  21.         if (null !== $externalLink && null !== $externalLink->getId()) {
  22.             return;
  23.         }
  24.         $queryBuilder = function (ExternalLinkNameRepository $repository) use ($externalLink) {
  25.             return $repository->getRemainingExternalLinksNamesInFranchise($externalLink->getFranchise());
  26.         };
  27.         $event->getForm()->add('externalLinkName'EntityType::class, $this->getEntityParameters(
  28.             ExternalLinkName::class,
  29.             'app.manager.pages.external_links.form.name.label',
  30.             self::PLACEHOLDER_CUSTOM,
  31.             true,
  32.             ['query_builder' => $queryBuilder]
  33.         ));
  34.     }
  35. }