Стандартные правила валидации — Часть 2

Комментарии: 4  Просмотры: 14 338

Продолжаем знакомство со стандартными правилами валидации и сейчас мы рассмотрим оставшиеся правила.

Иногда нам приходится интересоваться у пользователей их номером телефона. Для проверки правильности ввода номера существует правило phone. Последний необязательный параметр — это массив с разрешенным количеством цифр в номере (если в номере присутствуют посторонние символы — они не учитываются). Если не указать данный параметр, то будет производится проверка длины номера из 7, 10 и 11 цифр.

$valid->rule('number', 'phone', array(':value', array(7, 8, 10, 11)));

Для проверки правильности ввода даты используется правило date. При этом происходит попытка преобразования переданной строки в метку времени и если она проходит успешно, значит строка удовлетворяет условиям.

$valid->rule('now', 'date');

Правило alpha используется, когда нужно, чтобы проверяемое значение состояло только из букв. При этом по умолчанию данное правило работает только с латинскими буквами. Если вам нужно проверить, например, кириллицу, необходимо установить последний параметр, отвечающий за включение режима UTF8, в значение TRUE.

$valid->rule('login', 'alpha', array(':value', TRUE));

Следующее правило под названием alpha_numeric работает абсолютно аналогично, только теперь разрешает использование не только букв, но и цифр в проверяемом значении. Последний необязательный параметр также включает/выключает UTF8.

$valid->rule('password', 'alpha_numeric', array(':value', TRUE));

Правило alpha_dash помимо букв и цифр добавляет в список разрешенных символов дефис и подчеркивание. В остальном опять же все аналогично предыдущему правилу.

$valid->rule('name', 'alpha_dash', array(':value', TRUE));

Правило digit разрешает использование только целых чисел. Параметр включения/выключения UTF8 присутствует, хотя его использование кажется мне странным, так как для чисел нет разницы между их представлениями в WINDOWS-1251 и в UTF8.

$valid->rule('age', 'digit');

Правило numeric разрешает использование целых, отрицательных и дробных чисел. Причем разделитель дробного числа определяется исходя из указанной в конфигурации локали.

$valid->rule('price', 'numeric');

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

$valid->rule('rating', 'range', array(':value', 1, 5));

Правило decimal проверяет, является ли переданный параметр десятичным числом. Причем вы можете указать требуемое количество чисел как в целой, так и в дробной части. По умолчанию количество цифр в дробной части равно двум, а в целой — любое.

$valid->rule('price', 'decimal'); // Числа вида 3.50 или 999.00 - идеально для отображения цен
$valid->rule('price', 'decimal', array(':value', 4, 2)); // Число вида 22.1563

Правило color проверяет, является ли параметр кодом цвета в шестнадцатиричном формате. Принимаются различные варианты, такие как: #F00, #F00000 или даже 103CA1.

$valid->rule('color', 'color');

И наконец последнее стандартное правило — matches сравнивает между собой два поля. Абсолютно необходимая вещь для форм регистрации.

$valid->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));

Как видите стандартные правила Коханы охватывают большинство ситуаций, которые могут встретиться при валидации данных. Как эти правила работают, запоминать сейчас не обязательно. Просто знайте, что такие правила есть. А понадобиться использовать — всегда можно вернуться к данным урокам и перечитать их. Удачи.

<< Назад | Вперед >> | Обсудить на форуме


К записи оставлено 4 коммент.

Есть метод, который выводит на странице почтовый ящик для связи с антиспамом! Чтото подобное:


                            document.write("");

чтоб при обходе разных роботов, ящик не попал в базу!

Блин обрезало!


    d o c u m e n t . w r i t e ( " " ) ;  
//при сравнении двух параметров, необходимо сперва явно прописать правило для первого
//Это работать будет
$post->rule(TRUE,'not_empty')->rule('password','not_empty')->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));

//Это вызовет ошибку
$post->rule(TRUE,'not_empty')->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));

                              
                          

Не рекомендую использовать numeric там где возможны маленькие значения (например, 0.000000999637), т.к. они преобразуются к виду
9.96374011135829E-06
и валидацию не проходят



Оставить комментарий или два

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