<?php
namespace App\FormSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\Form;
use Doctrine\ORM\EntityManagerInterface;
class GHGrupoTrabajoSubscriber implements EventSubscriberInterface {
private $entityManager;
public function __construct(
EntityManagerInterface $entityManager
) {
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents(): array {
// Tells the dispatcher that you want to listen on the form.pre_set_data
// event and that the preSetData method should be called.
return [FormEvents::PRE_SUBMIT => 'preSubmit'];
}
public function preSubmit(FormEvent $event): void {
$data = $event->getData();
//data es un arreglo con los valores establecidos por el usuario en el form.
//como $data contiene el pais seleccionado por el usuario al enviar el formulario,
// usamos el valor de la posicion $data['country'] para filtrar el sql de los estados
if (isset($data['proceso'])) {
$idproceso = $data['proceso'];
$proceso = $this->entityManager->getRepository(\App\Entity\ParProceso::class)->find($idproceso);
$event->getForm()->add('subProceso', null, ['label' => 'SubProceso',
'required' => true,
'class' => \App\Entity\ParSubproceso::class,
'query_builder' => function (\Doctrine\ORM\EntityRepository $er)use ($idproceso) {
return $er->createQueryBuilder('e')
->leftJoin('e.proceso', 'p')
->where('p.id = :idproceso')
->setParameter('idproceso', $idproceso)
->orderBy('e.subproceso', 'ASC')
->setMaxResults(20);
},
'attr' => array('class' => 'form-control'), 'placeholder' => 'Seleccióne una opcion.']);
// $data['resumenPerfilCandidato'] = $textPerfil;
// $data['rangoSalarial'] = $perfilCargo->getRangoSalarial();
// $data['ParProceso'] = $perfilCargo->getParProceso()->getId();
// $data['subprocesoId'] = $perfilCargo->getSubprocesoId()->getId();
// $data['cargo'] = $perfilCargo->getCargo()->getId();
// $event->setData($data);
} else {
$event->getForm()->add('subProceso');
}
}
}