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
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
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
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
@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
@javiereguiluz gracias por el consejo, y la parte que cuando le doy el evento onclick no me valida como puedo solucionarlo?
@piocarluis
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