Creemos esta tabla en nuestra base de datos:
CREATE TABLE `autors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`mail` varchar(200) NOT NULL,
`edad` int(11) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`fecha` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
En nuestro modelo de datos tendremos que poner las siguientes validaciones:
Nombre y mail no pueden estar en blanco
mail tiene que ser un mail válido
La edad tiene que ser un número natural entre 18 y 120
La contraseña debe ser alfanumérica y entre 6 y 20 caracteres de longitud
La fecha una fecha en formato d-m-y
Solución:
public $validate = array(
'name' => array(
'notBlank' => array(
'rule' => array('notBlank'),
'message' => 'El nombre no puede estar en blanco',
),
),
'mail' => array(
'notBlank' => array(
'rule' => array('notBlank'),
'message' => 'El mail no puede estar en blanco',
),
'mail' => array(
'rule' => array('email'),
'message' => 'Debe ser un email válido',
),
),
'edad' => array(
'natural' => array(
'rule' => array('naturalNumber'),
'message' => 'Números positivos y enteros',
),
'rango' => array(
'rule' => array('range',17.9,120.1),
'message' => 'La edad debe estar entre 18 y 120',
),
),
'password' => array(
'alfanumerica' => array(
'rule' => array('alphaNumeric'),
'message' => 'La contraseña debe ser alfanumérica',
),
'rango' => array(
'rule' => array('lengthBetween',6,20),
'message' => 'La contraseña debe tener entre 6 y 20 caracteres de longitud',
),
),
'fecha' => array(
'fecha' => array(
'rule' => array('date', 'dmy'),
'message' => 'Debe ser una fecha',
),
),
);