Класс Validation в CakePHP содержит правила проверки данных, которые могут упростить валидацию данных модели. Этот класс содержит множество, часто используемых, приемов проверки данных. Ниже представлен полный перечень всех правил с примерами использования.
Данные для поля должны содержать только буквы и цифры.
<?
var $validate = array(
'login' => array(
'rule' => 'alphaNumeric',
'message' => 'Имена пользователей должны содержать только буквы и цифры.'
)
);
?>
Длина данных для поля должна попадать в указанный диапазон. Должны быть определены и минимум и максимум. Используется <=, а не <
<?
var $validate = array(
'password' => array(
'rule' => array('between', 5, 15),
'message' => 'Длина пароля должны быть от 5 до 15 символов.'
)
);
?>
Это правило используется для того, чтобы убедиться, что поле осталось пустым или присутствуют только пробелы (т.е. пробелы, символы табуляции, возврат каретки и новая строка).
<?
var $validate = array(
'id' => array(
'rule' => 'blank',
'on' => 'create'
)
);
?>
Данные для поля должны быть типа boolean. Допустимые значения: true или false, целые 0 или 1, или строковые '0' или '1'.
<?
var $validate = array(
'myCheckbox' => array(
'rule' => array('boolean'),
'message' => 'Некорректные значения для myCheckbox'
)
);
?>
Правило используется для проверки валидности номера кредитной карты. Оно принимает три параметра: 'type', 'deep' и 'regex'.
Индексу 'type' могут быть присвоены значения 'fast', 'all' или одно из следующих:
Если 'type' установлен в 'fast', то будет производиться проверка для основных форматов нумерации кредитных карт. Установка 'type' в 'all' будет проверять для всех типов кредитных карт. Вы также можете сопоставить 'type' массив типов, с которыми вы хотите производить сравнение.
Индексу 'deep' должно быть сопоставлено значение типа boolean. Если он установлен в true, валидация будет использовать алгоритм Луна http://ru.wikipedia.org/wiki/Алгоритм_Луна. По умолчанию установлен в false.
Индекс 'regex' позволяет вам использовать вам собственное регулярное выражение, которое будет использоваться для проверки номера кредитной карты.
<?
var $validate = array(
'ccnumber' => array(
'rule' => array('cc', array('visa', 'maestro'), false, null),
'message' => 'Неверный номер кредитной карты.'
)
);
?>
Comparison используетс для сравнения числовых значений. Он поддерживает is greater, is less, greater or equal, less or equal, is less, equal to, и not equal. Некоторые примеры представлены ниже:
<?
var $validate = array(
'age' => array(
'rule' => array('comparison', '>=', 18),
'message' => 'Должно быть не менее 18 лет.'
)
);
var $validate = array(
'age' => array(
'rule' => array('comparison', 'greater or equal', 18),
'message' => 'Должно быть не менее 18 лет.'
)
);
?>
Это правило гарантирует, что дата будет введена в корректных форматах. Единственный параметр (который может быть массивом) может быть передан. Он будет использоваться для проверки формата предлагаемой даты. Значения параметра могут быть следующие:
Если не передан ни один индекс, то по умолчанию будет использоваться 'ymd'.
<?
var $validate = array(
'born' => array(
'rule' => 'date',
'message' => 'Введите дату в формате YY-MM-DD.',
'allowEmpty' => true
)
);
?>
Многие хранилища данных требуют определенный формат даты. Вместо того, чтобы заставлять
пользователей ввести дату в нужном формате, вы можете принимать широкий массив форматов,
и затем конвертировать их в нужный.
Это правило гарантирует, что данные – корректное десятичное число. Может быть передан параметр, для указания требуемого количества знаков после запятой.
Если параметр не передан, то данные не пройдут проверку в случае отсутствия знаков после запятой.
<?
var $validate = array(
'price' => array(
'rule' => array('decimal', 2)
)
);
?>
Проверяет являются ли данные корректным email адресом. При передаче true в качестве второго параметра для этого правила будет производиться попытка проверить хост для данного адреса.
<?
var $validate = array('email' => array('rule' => 'email'));
var $validate = array(
'email' => array(
'rule' => array('email', true),
'message' => 'Пожалуйста, введите действующий email адрес.'
)
);
?>
Это правило проверяет, чтобы введеное значение было равно значению, определенному в правиле, и было того же типа.
<?
var $validate = array(
'food' => array(
'rule' => array('equalTo', 'cake'),
'message' => "Значение должно быть строкой 'cake' "
)
);
?>
Это правило проверяет расширение файла, наподобие .jpg или .png. Разрешает множество расширений при передаче их в виде массива.
<?
var $validate = array(
'image' => array(
'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),
'message' => "Разрешены файлы с расширениями 'gif', 'jpeg', 'png', 'jpg'."
)
);
?>
Это правило обеспечит проверку валидности введенного IPv4 адреса.
<?
var $validate = array(
'clientip' => array(
'rule' => 'ip',
'message' => 'Пожалуйста, введите корректный IP-адрес.'
)
);
?>
Данные для поля должны быть уникальными, они не могут быть в любой другой записи.
<?
var $validate = array(
'login' => array(
'rule' => 'isUnique',
'message' => 'Пользователь с таким логином уже существует.'
)
);
?>
Правило гарантирует, что данные содержат указанный минимум символов.
<?
var $validate = array(
'login' => array(
'rule' => array('minLength', '8'),
'message' => 'Логин должен быть минимум 8 символов.'
)
);
?>
Правило гарантирует, что данные не превышают указанную длину.
<?
var $validate = array(
'login' => array(
'rule' => array('maxLength', '15'),
'message' => 'Логин не должен превышать 15 символов.'
)
);
?>