src/FormSubscriber/GHGrupoTrabajoSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\FormSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\Form\Extension\Core\Type\TextType;
  5. use Symfony\Component\Form\FormEvent;
  6. use Symfony\Component\Form\FormEvents;
  7. use Symfony\Component\Form\Form;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. class GHGrupoTrabajoSubscriber implements EventSubscriberInterface {
  10.     private $entityManager;
  11.     public function __construct(
  12.             EntityManagerInterface $entityManager
  13.     ) {
  14.         $this->entityManager $entityManager;
  15.     }
  16.     public static function getSubscribedEvents(): array {
  17.         // Tells the dispatcher that you want to listen on the form.pre_set_data
  18.         // event and that the preSetData method should be called.
  19.         return [FormEvents::PRE_SUBMIT => 'preSubmit'];
  20.     }
  21.     public function preSubmit(FormEvent $event): void {
  22.         $data $event->getData();
  23.         //data es un arreglo con los valores establecidos por el usuario en el form.
  24.         //como $data contiene el pais seleccionado por el usuario al enviar el formulario,
  25.         // usamos el valor de la posicion $data['country'] para filtrar el sql de los estados
  26.         if (isset($data['proceso'])) {
  27.             $idproceso $data['proceso'];
  28.             $proceso $this->entityManager->getRepository(\App\Entity\ParProceso::class)->find($idproceso);
  29.           
  30.             $event->getForm()->add('subProceso'null, ['label' => 'SubProceso',
  31.                 'required' => true,
  32.                 'class' => \App\Entity\ParSubproceso::class,
  33.                 'query_builder' => function (\Doctrine\ORM\EntityRepository $er)use ($idproceso) {
  34.                     return $er->createQueryBuilder('e')
  35.                             ->leftJoin('e.proceso''p')
  36.                             ->where('p.id = :idproceso')
  37.                             ->setParameter('idproceso'$idproceso)
  38.                             ->orderBy('e.subproceso''ASC')
  39.                             ->setMaxResults(20);
  40.                 },
  41.                 'attr' => array('class' => 'form-control'), 'placeholder' => 'Seleccióne una opcion.']);
  42. //            $data['resumenPerfilCandidato'] = $textPerfil;
  43. //            $data['rangoSalarial'] = $perfilCargo->getRangoSalarial();
  44. //            $data['ParProceso'] = $perfilCargo->getParProceso()->getId();
  45. //            $data['subprocesoId'] = $perfilCargo->getSubprocesoId()->getId();
  46. //            $data['cargo'] = $perfilCargo->getCargo()->getId();
  47. //            $event->setData($data);
  48.         } else {
  49.             $event->getForm()->add('subProceso');
  50.         }
  51.     }
  52. }