Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Validar formularios

25 de junio de 2015

Tengo mapeado mis tablas de base de datos en las entidades que genera Symfony, y tengo validaciones como:

/**
     * @var string
     *
     * @ORM\Column(name="cedula", type="string", length=10, nullable=false)
     */

Pero en el formulario me valida la longitud pero no me valida si el campo esta vacío y en mi controlador tengo:

if ($form->isValid()) { ... }

Pero no me valida que el campo esta vacío, ¿qué puede ser?


Respuestas

#1

Si las anotaciones que muestras en tu pregunta son todas las que incluyes en tus entidades, entonces el error está claro. Si repasas el capítulo sobre validación de formularios, verás que necesitas añadir anotaciones de tipo @Assert para validar las propiedades de las entidades. Las anotaciones @Column son solo para Doctrine y le base de datos.

En tu caso, tendrías que usar lo siguiente:

use Symfony\Component\Validator\Constraints as Assert;
 
/**
 * @var string
 *
 * @ORM\Column(name="cedula", type="string", length=10, nullable=false)
 * @Assert\NotBlank
 */

@javiereguiluz

25 junio 2015, 16:40
#2

Tengo otra duda. Ya me valida pero cuando al botón de guardar le doy un evento onclick, no me hace las validaciones. ¿Cómo hago ahí?

<input type="submit"  value="Crear Usuario" onclick="window.opener.location.href='pagina.php'; window.close();" />

El formulario se abre en un popup y después de guardar los datos la ventana popup se cierra y la página padre la direcciona a otra página pero en ese caso no me efectúa las validaciones.

@piocarluis

25 junio 2015, 17:48
#3

Hice la prueba y el formulario si me valida sin necesidad de agregar anotaciones de tipo

* @Assert\NotBlank

El problema es que si el botón tiene el evento onclick no efectúa las validaciones.

@piocarluis

25 junio 2015, 18:06
#4

@piocarluis ten en cuenta que la validación se hace a dos niveles: navegador y servidor. Si no pones anotaciones @Assert(), la información no se está validando en el servidor. Eso quiere decir que un usuario malicioso podría saltarse el navegador e introducir información errónea en tu base de datos.

@javiereguiluz

25 junio 2015, 18:15
#5

@javiereguiluz gracias por el consejo, y la parte que cuando le doy el evento onclick no me valida como puedo solucionarlo?

@piocarluis

25 junio 2015, 18:44
#6

No es posible hacer esa validación con los formularios de Symfony. El motivo es que no se utiliza ningún tipo de código JavaScript para validar los formularios. La validación que ves en tu navegador se debe al propio navegador y se define mediante las etiquetas HTML5.

@javiereguiluz

25 junio 2015, 20:16