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 :
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
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
Obtener validadores en campo email:
Ubiquity info:validation email -m=User
También se puede acceder a la información de validación desde la parte modelos de las webtools:
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} |