Ejercicio validaciones

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',
 ),
 ),
 );