CakePHP: Manual/CommonTasks/DataValidation/CoreRules

Встроенные правила валидации

Класс Validation в CakePHP содержит правила проверки данных, которые могут упростить валидацию данных модели. Этот класс содержит множество, часто используемых, приемов проверки данных. Ниже представлен полный перечень всех правил с примерами использования.


alphaNumeric

Данные для поля должны содержать только буквы и цифры.

<?

var $validate = array(

    'login' => array(

        'rule' => 'alphaNumeric',

        'message' => 'Имена пользователей должны содержать только буквы и цифры.'

    )

);

?>


between

Длина данных для поля должна попадать в указанный диапазон. Должны быть определены и минимум и максимум. Используется <=, а не <

<?

var $validate = array(

    'password' => array(

        'rule' => array('between'515),

        'message' => 'Длина пароля должны быть от 5 до 15 символов.'

    )

);

?>


blank

Это правило используется для того, чтобы убедиться, что поле осталось пустым или присутствуют только пробелы (т.е. пробелы, символы табуляции, возврат каретки и новая строка).

<?

var $validate = array(

    'id' => array(

        'rule' => 'blank',

        'on' => 'create'

    )

);

?>


boolean

Данные для поля должны быть типа boolean. Допустимые значения: true или false, целые 0 или 1, или строковые '0' или '1'.

<?

var $validate = array(

    'myCheckbox' => array(

        'rule' => array('boolean'),

        'message' => 'Некорректные значения для myCheckbox'

    )

);

?>


cc

Правило используется для проверки валидности номера кредитной карты. Оно принимает три параметра: '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'), falsenull),

        'message' => 'Неверный номер кредитной карты.'

    )

);

?>


comparison

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 лет.'

    )

);

?>


date

Это правило гарантирует, что дата будет введена в корректных форматах. Единственный параметр (который может быть массивом) может быть передан. Он будет использоваться для проверки формата предлагаемой даты. Значения параметра могут быть следующие:

Если не передан ни один индекс, то по умолчанию будет использоваться 'ymd'.

<?

var $validate = array(

    'born' => array(

        'rule' => 'date',

        'message' => 'Введите дату в формате YY-MM-DD.',

        'allowEmpty' => true

    )

);

?>

Многие хранилища данных требуют определенный формат даты. Вместо того, чтобы заставлять 

пользователей ввести дату в нужном формате, вы можете принимать широкий массив форматов, 

и затем конвертировать их в нужный.


decimal

Это правило гарантирует, что данные – корректное десятичное число. Может быть передан параметр, для указания требуемого количества знаков после запятой.

Если параметр не передан, то данные не пройдут проверку в случае отсутствия знаков после запятой.

<?

var $validate = array(

    'price' => array(

        'rule' => array('decimal'2)

    )

);

?>


email

Проверяет являются ли данные корректным email адресом. При передаче true в качестве второго параметра для этого правила будет производиться попытка проверить хост для данного адреса.

<?

var $validate = array('email' => array('rule' => 'email'));

 

var $validate = array(

    'email' => array(

        'rule' => array('email'true),

        'message' => 'Пожалуйста, введите действующий email адрес.'

    )

);

?>


equalTo

Это правило проверяет, чтобы введеное значение было равно значению, определенному в правиле, и было того же типа.

<?

var $validate = array(

    'food' => array(

        'rule' => array('equalTo''cake'),  

        'message' => "Значение должно быть строкой 'cake' "

    )

);

?>


extension

Это правило проверяет расширение файла, наподобие .jpg или .png. Разрешает множество расширений при передаче их в виде массива.

<?

var $validate = array(

    'image' => array(

        'rule' => array('extension', array('gif''jpeg''png''jpg')),

        'message' => "Разрешены файлы с расширениями 'gif', 'jpeg', 'png', 'jpg'."

    )

);

?>


ip

Это правило обеспечит проверку валидности введенного IPv4 адреса.

<?

var $validate = array(

    'clientip' => array(

        'rule' => 'ip',

        'message' => 'Пожалуйста, введите корректный IP-адрес.'

    )

);

?>


isUnique

Данные для поля должны быть уникальными, они не могут быть в любой другой записи.

<?

var $validate = array(

    'login' => array(

        'rule' => 'isUnique',

        'message' => 'Пользователь с таким логином уже существует.'

    )

);

?>


minLength

Правило гарантирует, что данные содержат указанный минимум символов.

<?

var $validate = array(

    'login' => array(

        'rule' => array('minLength''8'),  

        'message' => 'Логин должен быть минимум 8 символов.'

    )

);

?>


maxLength

Правило гарантирует, что данные не превышают указанную длину.

<?

var $validate = array(

    'login' => array(

        'rule' => array('maxLength''15'),  

        'message' => 'Логин не должен превышать 15 символов.'

    )

);

?>


money

Правило проверяет, что значение является валидной денежной величиной.

Второй параметр определяет расположение символа (слева/справа).

<?

var $validate = array(

    'salary' => array(

        'rule' => array('money''left'),

        'message' => 'Пожалуйста, введите денежную величину.'

    )

);

?>


Multiple

Используйте это правило для валидации значений мульти-селекта (multiple select input). Поддерживает параметры “in”, “max” и “min”.

<?

var $validate = array(

    'multiple' => array(

        'rule' => array('multiple', array('in' => array('foo''bar'), 'min' => 1'max' => 3)),

        'message' => 'Пожалуйста, выберите первый, второй или третий вариант'

    )

);

?>


inList

Это правило проверяет входит ли значение в данное множество. Требует массив значений. Поле валидно, если его значение совпадает с одним из значений данного массива.

<?

    var $validate = array(

      'function' => array(

          'allowedChoice' => array(

              'rule' => array('inList', array('Foo''Bar')),

              'message' => 'Введите Foo или Bar.'

          )

      )

    );

?>


numeric

Проверяет являются ли переданные данные чилом.

<?

var $validate = array(

    'cars' => array(

        'rule' => 'numeric',  

        'message' => 'Пожалуйста, введите количество машин.'

    )

);

?>


notEmpty

Основное правило, гарантирующее, что поле не пустое.

<?

var $validate = array(

    'title' => array( 

        'rule' => 'notEmpty',

        'message' => 'Поле не должно быть пустым'

    )

);

?>

Не используйте это правило для multiple select input, так как это вызовет ошибку. 

Используйте вместо этого - "multiple".


phone

Phone проводит проверку телефонных номеров US. Если вы хотите проверить не-US телефонный номер, то вы можете передать вторым параметром регулярное выражение.

<?

var $validate = array(

    'phone' => array(

        'rule' => array('phone'null'us')

    )

);

?>


postal

Postal используется для валидации ZIP кодов из США (us), Канады (ca), Великобритании (uk), Италии (it), Германии (de) и Бельгии (be). Для других форматов ZIP кода, вы можете передать регулярное выражение в качестве второго параметра.

<?

var $validate = array(

    'zipcode' => array(

        'rule' => array('postal'null'us')

    )

);

?>


range

Правило проверяет, что значение входит в указанный диапазон. Если диапазон не указан, то правило проверит, чтобы значение было допустимой конечной величиной для текущей платформы.

<?

var $validate = array(

    'number' => array(

        'rule' => array('range'010),

        'message' => 'Пожалуйста введите число между 0 и 10'

    )

);

?>


ssn

Ssn проверяет номер социального страхования из США (us), Дании (dk), и Нидерландов (nl). Для других форматов номера социального страхования, вы можете передать регулярное выражение.

<?

var $validate = array(

    'ssn' => array(

        'rule' => array('ssn'null'us')

    )

);

?>


url

Правило проверяет валидность формата URL. Поддерживает http(s), ftp(s), file, news, и gopher протоколы.

<?

var $validate = array(

    'website' => array(

        'rule' => 'url'

    )

);

?>

Для проверки того, что протокол присутствует в url, доступен строгий режим, например:

<?

var $validate = array(

    'website' => array(

        'rule' => array('url',true)

    )

);

?>


<< Множество правил для поля | Пользовательские правила валидации >>