Esta es una pregunta rápida relacionada con Symfony, pero podría ser una pregunta general de MVC.¿Debe validar en el modelo? (Pregunta basada en Symfony, pero relacionada con MVC general)
Tengo una clase en mi modelo, por ejemplo, WebUser
. Esta clase tiene una propiedad de email_address
. Este valor debe ser único para cada WebUser
.
Ahora, lo he hecho para que todos mis formularios de Symfony validen que el email_address
es único para el WebUser
, sin embargo, me pregunto si debería agregar esta validación al modelo también.
Pero esto también me hizo pensar, ¿debería realmente validar cada método set()
en el modelo? Parece una decisión lo suficientemente sabia como para asegurarse de que no haya datos erróneos en la base de datos, sin embargo, la mayoría de los datos (si no todos) deben pasar por los controladores, que también se validan. ¿Entonces para mí parece que estoy ejecutando la misma validación dos veces y parece inútil?
¿Qué piensas de esto? Todavía me inclino por la validación en el modelo ya que tiene más sentido ya que dicta la lógica comercial.
Si debe validar en el modelo, ¿cómo arroja un error set()
apropiado en Symfony que maneja correctamente el marco de formulario?
Gracias.
+1 para distinguir entre validación funcional y validación de datos. Aunque, creo que la mayoría de las respuestas (incluida la mía) solo se referían a la validación de datos. Sin embargo, no estoy seguro de que me referiría a lo que describiste como 'validación'. Usualmente solo lo mencionas como controlador o lógica de aplicación. Pero eso es solo semántica. –
¿Qué sucede si no estás usando Doctrine? No usamos una base de datos, estamos usando una API (eventualmente usan una base de datos) –