Administrar, modificar y validar formularios y subformularios en Symfony

No entraremos en detalle en como funciona y como se “pinta”, valida y guarda un formulario, pero podríamos resumirlo en que el formulario se encarga de convertir los datos que se proveen por html y pasarlos a objetos.

En algunas ocasiones también tenemos subformularios necesitamos modificar los datos enviados, para eliminar un campo o modificar su valor.

Esta función se realiza con FormEvents::PRE_SUBMIT este evento es ejecutado antes de guardar un formulario. Este evento se lanza en el FormType que tengas que creado.

 public function buildForm(FormBuilderInterface $builder, array $options)
{
....
$builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event){
 $data = $event->getData(); // Datos que vienen mediante el POST
 $form = $event->getForm(); // Campos que recibirán estos datos
if (!isset($data["credenciales"])){ // credenciales hace referencia a un subformulario del principal que viene sin valor
  $event->getForm()->remove("credenciales"); // eliminamos la necesidad de agregar estos datos a formulario y a su vez a la entidad 
}
     
}

}