Cuando valido un formulario y no es correcta la validación, el método handleRequest()
cambia las propiedades del objeto asociado al formulario, algo que no es deseable para no modificar las plantillas con datos que no han sido validados.
Por ejemplo, tengo en una plantilla: Usuario conectado como --------
, que es el nombre del usuario logueado. Si quiero cambiar ese nombrede usuario, al introducir un nuevo nombre que no es valido, en la base de datos lógicamente no se cambia por no ser correcta la validación, pero en la plantilla me aparece el nombre erróneo que acabo de introducir debido a que handleRequest()
cambia el objeto se produzca o no la validación.
Respuestas
El método handleRequest()
funciona por defecto de esa manera porque normalmente, cuando un formulario no es válido, lo que quieres hacer es volver a mostrarle el formulario al usuario con los datos que él mismo introdujo y con los correspondientes mensajes de error.
Obviamente en tu caso este no es el comportamiento deseado, por lo que tienes que hacer uso del método getData()
sobre el objeto del formulario. Este método devuelve el valor que originalmente tenía cada campo del formulario antes que el usuario modificara sus valores.
En un formulario puedes obtener los valores originales directamente como $form->getData()
y en una plantilla lo harías como {{ form.data }}
.
@javiereguiluz