src/Form/EventListener/AddLocalityFieldSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Form\EventListener;
  3. use App\Entity\FederalEntity;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Form\Form;
  8. use Symfony\Component\Form\FormEvent;
  9. use Symfony\Component\Form\FormEvents;
  10. use Symfony\Component\Form\FormInterface;
  11. use Doctrine\ORM\EntityRepository;
  12. use Shapecode\Bundle\HiddenEntityTypeBundle\Form\Type\HiddenEntityType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use App\Entity\Locality;
  15. class AddLocalityFieldSubscriber implements EventSubscriberInterface
  16. {
  17.     private $em;
  18.     public function __construct(EntityManagerInterface $em)
  19.     {
  20.         $this->em $em;
  21.     }
  22.     private function addField(FormInterface $form$locality)
  23.     {
  24.         $localityName = ($locality) ? $locality->getName() : "";
  25.         $form
  26.             ->add('locality'HiddenEntityType::class, [
  27.                 'help' => 'Escriba las primeras 3 letra del nombre de la localidad',
  28.                 'class' => Locality::class,
  29.                 'data' => $locality,
  30.             ])
  31.             ->add('localityName'TextType::class, [
  32.                 'help' => 'Escriba las primeras 3 letra del nombre de la localidad y selecciona de la lista.',
  33.                 'mapped' => false,
  34.                 'data' => $localityName,
  35.                 'label' => 'Localidad',
  36.             ]);
  37.     }
  38.     public function onFormPreSetData(FormEvent $event)
  39.     {
  40.         $data$event->getData();
  41.         $form $event->getForm();
  42. //        /** @var  $documentType DocumentType */
  43. //        $documentType =
  44. //        $documents = (!$documentType) ? [] : $documentType->getDocuments();
  45.         $locality = (!$data || null === $data->getId()) ? null $data->getLocality();
  46.         $this->addField($form$locality);
  47.     }
  48.     public function onFormPostSubmit(FormEvent $event)
  49.     {
  50.         $data$event->getData();
  51.         $form $event->getForm();
  52. //        $documentTypeId = $data['documentType'];
  53. //        $documentType = $this->em->getRepository(DocumentType::class)->find($documentTypeId);
  54. //        $documents = $documentType->getDocuments();
  55. //        $this->addField($form, $documentType, $documents);
  56.     }
  57.     public static function getSubscribedEvents()
  58.     {
  59.         return [
  60.             'form.pre_set_data' => 'onFormPreSetData',
  61.             FormEvents::PRE_SUBMIT => 'onFormPostSubmit',
  62.         ];
  63.     }
  64. }