entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

[Symfony 2] Reutilizar un mismo formType modificando propiedades de los campos

Estoy realizando una app en la que se deben registrar Usuarios, modificarlos y realizar una búsqueda (lo normal vamos).

Los dos primeros no hay problema ya que el formulario es idéntico, tiro de la misma Entity, del mismo FormType salvo que en la acción modificar relleno los campos con el usuario en cuestión y fin pero para la búsqueda quiero hacer un formulario exactamente igual a los dos anteriores salvo que los campos no deben tener la propiedad "required" ya que puedo decidir hacer una búsqueda sobre un solo campo y no sobre todos los requeridos.

El caso es que me parece un poco chapuza hacer un formulario que es igual que los anteriores y eliminar una sola palabra en tres o cuatro campos, no se si existe alguna forma de hacerlo correctamente (heredando el formulario y eliminando solo esa propiedad) o si existe alguna otra estrategia para hacerlo que no conozco.

1 Respuesta

4votos

magarzon Puntos30650

Hola.

La opción "required" para los campos de un formulario lo único que hace es, en aquellos navegadores que soportan HTML5, una validación en cliente para que ese campo no esté en blanco.

Como siempre deberías hacer también una validación en servidor, y como personalmente la validación HTML5 no me gusta nada (no puedes cambiarle el idioma del popup que sale, por ejemplo) o si quieres hacer otro tipo de validación, como email, teléfono, etc., no puedes, tienes que recurrir a una librería o hacértelo tú, lo que yo te recomendaría es:

  • Validar en servidor, utilizando Constraints y dos grupos de validación, uno con los campos requeridos y otro sin ellos (o solo uno, si no hay más constraint en el segundo caso), de manera que cuando creas el formulario para la creación/modificación, le indicas el grupo de constraint más restrictivo, y cuando lo creas en el caso de la búsqueda, el que permite esos campos en blanco.
  • No utilizar el required en ningún caso. Utilizar una librería javascript de validación en cliente,o por ejemplo utilizar este bundle que te transforma los Constraints en validación en cliente: https://github.com/formapro/JsFormValidatorBundle (no lo he utilizado nunca, no sé si va bien)

Si necesitas más explicación sobre cómo utilizar los Constraint, dilo.

0voto

Karlos1337 comentado

Muchísimas gracias, estaba tan obcecado en buscar la forma de eliminar el tag required del formType que ni había pensado en los grupos de validación (y aunque lo hubiera conseguido luego me habría topado con las Constraints igualmente :S), lo haré de esa manera, no me hace mucha gracia meter un javascript solo para la validación cuando se puede hacer con el mismo framework.

De nuevo, muchas gracias.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta