Tengo el siguiente problema trabajando con los eventos de los formularios de symfony para modificar el formulario dinamicamente. Voy a intentar simplicar el caso de uso lo máximo que pueda para ver si se entiende mejor.
Tengo formulario que contiene 2 campos, uno disponibilidad de salida y otro disponibilidad de regreso
Estos dos campos son de un tipo personalizado llamado selector de disponibilidad. Este selector de disponibilidad tiene 5 campos, actividad, puerto, fecha y hora y es vuelta. A su vez el campo fecha y hora tiene dos campos, fecha y hora que es un desplegable.
Ahora el problema.
El problema es que,
- puerto depende de lo que elijas en actividad
- fecha depende de lo que elijas en actividad y puerto
- hora depende de lo que elijas en actividad, puerto y fecha
He intentado escuchar al evento POST_SUBMIT en los campos hijos, pero sólo tengo la información del campo que envío.
También he intentado enviar todo el campo personalidado selector de disponibilidad, pero el problema es que si envío todo el campo, no puedo modificar el formulario por que ya se ha enviado. Cambie el evento a escuchar por SUBMIT, pero en ese caso el formulario que devuelve no contiene la información que se acaba de enviar (si tenia una fecha seleccionada, se pierde)
Por otra parte, al enviar el formulario con un campo solo, el evento se ejecuta en los 2 campos selector de disponibilidad. Es decir yo envio el campo disponibilidad de salida y se ejecutan los eventos de disponibilidad de regreso y viceversa.
No se si me he explicado bien, espero que si, y a ver si con vuestra ayuda soy capaz de desbloquear esto
Respuestas
Solucionado:
Por si a alguien le interesa.
Hay que escuchar al evento PRE_SUBMIT, teniendo en cuenta que la información que viene en "$event->getData()" no está normalizada y es limpia, tal cual viene del servidor.
Respecto a lo de que se saltan los eventos 2 veces, simplemente lo solucione dentro del propio evento comprobando la información que fuera distinta de null
@SoutlinK
¡Muchas gracias por publicar la respuesta! No es fácil trabajar con los formularios de Symfony cuando empiezas a hacer cosas más complejas.
@javiereguiluz
Javier el próximo libro solo de formulario ;-)
@marcware82