src/FormSubscriber/RFCambioCustodiaDocumentoSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. // src/Form/EventListener/AddNameFieldSubscriber.php
  3. namespace App\FormSubscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Form\Extension\Core\Type\TextType;
  6. use Symfony\Component\Form\FormEvent;
  7. use Symfony\Component\Form\FormEvents;
  8. use Symfony\Component\Form\Form;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. class RFCambioCustodiaDocumentoSubscriber implements EventSubscriberInterface {
  11.     private $entityManager;
  12.     public function __construct(
  13.             EntityManagerInterface $entityManager
  14.     ) {
  15.         $this->entityManager $entityManager;
  16.     }
  17.     public static function getSubscribedEvents(): array {
  18.         // Tells the dispatcher that you want to listen on the form.pre_set_data
  19.         // event and that the preSetData method should be called.
  20.         return [FormEvents::PRE_SUBMIT => 'preSubmit'];
  21.     }
  22.     public function preSubmit(FormEvent $event): void {
  23.         $data $event->getData();
  24.         //data es un arreglo con los valores establecidos por el usuario en el form.
  25.         //como $data contiene el pais seleccionado por el usuario al enviar el formulario,
  26.         // usamos el valor de la posicion $data['country'] para filtrar el sql de los estados
  27.         if (isset($data['nuevoUsuarioResponsable'])) {
  28.             $idColaborador $data['nuevoUsuarioResponsable'];
  29.             $colaborador $this->entityManager->getRepository(\App\Entity\TerPersona::class)->find($idColaborador);
  30.             $cargo "N/A";
  31.             $sede "N/A";
  32.             $proceso "0";
  33.             if ($colaborador->getPerfilCargo()) {
  34.                 $cargo $colaborador->getPerfilCargo()->getCargo()->getNombre();
  35.                 $sede $colaborador->getSede() != null $colaborador->getSede()->getId():0;
  36.                 $proceso $colaborador->getPerfilCargo()->getParProceso()->getId();
  37.                         
  38.             }
  39.             
  40.              $event->getForm()->add('proceso'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, [
  41.                     'label' => 'Proceso',
  42.                     'required' => true,
  43.                     'class' => \App\Entity\ParProceso::class,
  44.                     'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use ($proceso) {
  45.                         return $er->createQueryBuilder('e')
  46.                         ->where('e.id = :idProceso')
  47.                         //->where('nc.id in (:idNivelCargo)')
  48.                         ->setParameter('idProceso'$proceso)
  49.                         ->orderBy('e.nombre''ASC')
  50.                         ->setMaxResults(50);
  51.                     },
  52.                     'attr' => array('class' => 'form-control','readonly'=>true)])
  53.                     ->add('sede'\Symfony\Bridge\Doctrine\Form\Type\EntityType::class, [
  54.                     'label' => 'Sucursal',
  55.                     'required' => true,
  56.                     'class' => \App\Entity\TerSedeEmpresa::class,
  57.                     'query_builder' => function (\Doctrine\ORM\EntityRepository $er)use ($sede) {
  58.                         return $er->createQueryBuilder('e')
  59.                         ->where('e.id = :idSede')
  60.                         //->where('nc.id in (:idNivelCargo)')
  61.                         ->setParameter('idSede'$sede)
  62.                         ->orderBy('e.nombre''ASC')
  63.                         ->setMaxResults(50);
  64.                     },
  65.                     'attr' => array('class' => 'form-control','readonly'=>true)])
  66.                   //  ->add('cargoTmp', null, ['disabled' => true, 'label' => 'Cargo Actual', 'mapped' => false])
  67.                     ;
  68.             
  69.             $data['cargoTmp2'] = $cargo;
  70.             
  71.             $event->setData($data);
  72.         } 
  73.     }
  74. }