Validación de datos

Cuando creamos un modelo tenemos la posibilidad de introducir validación de datos. Se indica con la variable $validate:

class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' => 'alphaNumeric',
        'email' => 'email',
        'born' => 'date'
    );
}

Las reglas de validación pueden ser complejas:

class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'login' => array(
            'alphaNumeric' => array(
                'rule' => 'alphaNumeric',
                'required' => true,
                'message' => 'Sólo letras y números'
                ),
            'between' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Entre 5 y 15 caracteres'
            )
        ),
        'password' => array(
            'rule' => array('minLength', '8'),
            'message' => 'Largo mínimo de 8 caracteres'
        ),
        'email' => 'email',
        'born' => array(
            'rule' => 'date',
            'message' => 'Ingrese una fecha válida',
            'allowEmpty' => true
        )
    );
}

El formato general es el siguiente:

var $validate = array(
    'fieldName1' => array(
        'rule' => 'ruleName', // ó: array('ruleName', 'param1', 'param2' ...)
        'required' => true,
        'allowEmpty' => false,
        'on' => 'create', // ó: 'update'
        'message' => 'Su mensaje de error'
    )
);

Cada campo puede tener más de una regla:

var $validate = array(
    'login' => array(
        'alphanumeric' => array(
            'rule' => 'alphaNumeric',
            'message' => 'Se permiten sólo letras y números',
            'last' => true
         ),
        'minlength' => array(
            'rule' => array('minLength', '8'),
           'message' => 'Largo mínimo de 8 caracteres'
        ),
    )
);

Una lista de todas las reglas incorporadas en el núcleo se puede encontrar aquí:

Data validation in cakephp

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos