Ver índice de contenidos del libro

11.7. Validando valores y arrays

Hasta ahora hemos visto cómo puedes validar objetos completos. Pero a veces, sólo deseas validar un único valor, como por ejemplo verificar que una cadena de texto es una dirección de correo electrónico válida. Dentro de un controlador de Symfony, este es el código que debes utilizar para este tipo de validaciones:

use Symfony\Component\Validator\Constraints\Email;
// ...
 
public function addEmailAction($email)
{
    $emailConstraint = new Email();
    // puedes establecer todas las opciones de restricción
    // de esta manera
    $emailConstraint->message = 'Invalid email address';
 
    // usa el servicio validator para validar el valor
    $errorList = $this->get('validator')->validateValue(
        $email,
        $emailConstraint
    );
 
    if (count($errorList) == 0) {
        // esta es una dirección de correo válida
    } else {
        // esta NO es una dirección de correo electrónico válida
        $errorMessage = $errorList[0]->getMessage();
 
        // ...
    }
 
    // ...
}

Al llamar al método validateValue del validador, pasa el valor a validar y un objeto de tipo restricción. La lista completa de restricciones disponibles, así como el nombre de clase completo para cada restricción está disponible en las secciones anteriores de este mismo capítulo.

El método validateValue() devuelve un objeto de tipo ConstraintViolationList, que actúa como un array de errores. Cada error de la colección es un objeto de tipo ConstraintViolation y puedes acceder a cada mensaje de error con su método getMessage().