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