Validadores (Validators)

Nota

El módulo Validators utiliza la clase estática ValidatorsManager para gestionar la validación.

Los validadores se utilizan para comprobar que los datos de los miembros de un objeto cumplen ciertas restricciones.

Añadir validadores

O bien la clase Author que queremos utilizar en nuestra aplicación :

app/models/Author.php
 1     namespace models;
 2
 3     class Author {
 4             /**
 5              * @var string
 6              * @validator("notEmpty")
 7              */
 8             private $name;
 9
10             public function getName(){
11                     return $this->name;
12             }
13
14             public function setName($name){
15                     $this->name=$name;
16             }
17     }

Hemos añadido una restricción de validación en el miembro name con la anotación @validator, para que no esté vacío.

Generar caché

Ejecute este comando en modo consola para crear los datos de caché de la clase Author :

Ubiquity init-cache -t=models

La caché del validador se genera en app/cache/contents/validators/models/Author.cache.php.

Validación de instancias

una instancia

public function testValidateAuthor(){
        $author=new Author();
        //Do something with $author
        $violations=ValidatorsManager::validate($author);
        if(sizeof($violations)>0){
                echo implode('<br>', ValidatorsManager::validate($author));
        }else{
                echo 'The author is valid!';
        }
}

si el nombre del autor está vacío, esta acción debe mostrarse:

name : This value should not be empty

El método validate devuelve una matriz de instancias ConstraintViolation.

instancias multiples

public function testValidateAuthors(){
        $authors=DAO::getAll(Author::class);
        $violations=ValidatorsManager::validateInstances($author);
        foreach($violations as $violation){
                echo $violation.'<br>';
        }
}

Generación de modelos con validadores por defecto

Cuando las clases se generan automáticamente a partir de la base de datos, se asocian validadores por defecto a los miembros, en función de los metadatos de los campos.

Ubiquity create-model User
app/models/Author.php
 1     namespace models;
 2     class User{
 3             /**
 4              * @id
 5              * @column("name"=>"id","nullable"=>false,"dbType"=>"int(11)")
 6              * @validator("id","constraints"=>array("autoinc"=>true))
 7             **/
 8             private $id;
 9
10             /**
11              * @column("name"=>"firstname","nullable"=>false,"dbType"=>"varchar(65)")
12              * @validator("length","constraints"=>array("max"=>65,"notNull"=>true))
13             **/
14             private $firstname;
15
16             /**
17              * @column("name"=>"lastname","nullable"=>false,"dbType"=>"varchar(65)")
18              * @validator("length","constraints"=>array("max"=>65,"notNull"=>true))
19             **/
20             private $lastname;
21
22             /**
23              * @column("name"=>"email","nullable"=>false,"dbType"=>"varchar(255)")
24              * @validator("email","constraints"=>array("notNull"=>true))
25              * @validator("length","constraints"=>array("max"=>255))
26             **/
27             private $email;
28
29             /**
30              * @column("name"=>"password","nullable"=>true,"dbType"=>"varchar(255)")
31              * @validator("length","constraints"=>array("max"=>255))
32             **/
33             private $password;
34
35             /**
36              * @column("name"=>"suspended","nullable"=>true,"dbType"=>"tinyint(1)")
37              * @validator("isBool")
38             **/
39             private $suspended;
40     }

Estos validadores pueden ser modificados.
Las modificaciones siempre deben ir seguidas de una reinicialización de la caché del modelo.

Ubiquity init-cache -t=models

La información sobre la validación de los modelos puede visualizarse con devtools :

Ubiquity info:validation -m=User
../_images/info-validation-devtools.png

Obtener validadores en campo email:

Ubiquity info:validation email -m=User
../_images/info-validation-email-devtools.png

También se puede acceder a la información de validación desde la parte modelos de las webtools:

../_images/info-validation-webtools.png

Tipos de validadores

Basic

Validador

Roles

Restricciones

Valores aceptados

isBool

Verifica si el valor es un booleano

true,false,0,1

isEmpty

Verifica si el valor está vacío

“”,null

isFalse

Verifica si el valor es falso

false,”false”,0,”0”

isNull

Verifica si el valor es nulo

null

isTrue

Verifica si el valor es verdadero

true,”true”,1,”1”

notEmpty

Verifica si el valor no está vacío

!null && !””

notNull

Verifica si el valor no es nulo

!null

tipo

Verifica si el valor es del tipo {type}

{type}

Comparación

Fechas

Múltiples

Cadenas