symfony3 formularios - validaciones personalizadas


Se puede crear nuestras propias constraints
siguiendo el esquema de las que existen:
por ejemplo para la constraint NotBlank (clase annotation) existe una clase NotBlankValidator que implementa la validacion.
Ambas clases se encuentran en la misma carpeta vendor/Symfony/Validator/Contraints

entonces,
para crear una constraint que permita alfanumericos con espacios, creamos la carpeta

src/AppBundle/Validator/Constraints

y ahi creamos la clase llamada por ejemplo ContainsAlphanumericWithSpaces y ContainsAlphanumericWithSpacesValidator

donde
/**
* @Annotation
*/
class ContainsAlphanumericWithSpace extends Constraint{
    public $message = 'The string "%string%" contains an illegal character: it can only contain letters, numbers or spaces.';

}

class ContainsAlphanumericWithSpaceValidator extends ConstraintValidator
{
    public function validate($value, Constraint $constraint)
    {
        if (!preg_match('/^[a-zA-Z0-9\s]+$/', $value, $matches)) {
            $this->context->buildViolation($constraint->message)
                ->setParameter('%string%', $value)
                ->addViolation();
        }
    }

No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable