Валидаторы полей
Правила валидации разделяются знаком ;
. Параметры для правил передаются через знак :
.
Пример корректного списка правил, содержащего два правила, одно из них с параметром: "notempty;minlength:6"
наименование | Описание | Параметр |
---|---|---|
notempty | Поле не может быть пустым. Если это набор radio-инпутов, то один из них должен быть помечен. | - |
minlength | Не менее {%} символов | кол-во символов |
maxlength | Не более {%} символов | кол-во символов |
hasdomain | Адрес должен начинаться с верного домена ({%}) | домен |
isnumeric | Поле может содержать только цифры | - |
isemail | Должен быть введен корректный E-Mail | - |
isdate | Поле должно содержать дату | - |
isphone | Поле должно содержать номер телефона | - |
minint | Минимальное вводимое число {%} | число |
maxint | Максимальное вводимое число {%} | число |
intonly | Можно ввести только число | число |
passretry | Должно быть равно полю с паролем | наименование поля с паролем, по-умолчанию "password" |
checked | Проверить, что на checkbox-элементе стоит галочка. Используется для необходимости согласиться с условиями лицензии, например. | - |
Добавление своего валидатора
Вы можете легко добавить свои собственные валидаторы, используя подобный пример:
$(window).load(function(){
PrettyForms.Validator.setValidator('needempty', 'Поле должно быть пустым!', function(element, value, param){
// needempty - название валидатора
// второй параметр - сообщение об ошибке
// третий - это сама функция валидации, в которую передаются три параметра: jQuery-элемент, значение элемента и параметр валидатора, если он был передан в свойствах валидации
return value === '';
});
});
Дополнительные атрибуты валидации
Библиотека также позволяет добавлять к полям некоторые дополнительные атрибуты, которые регулируют поведение проверки поля.
атрибут | Описание | Обязательно? |
---|---|---|
data-dontsend="true" | Отключает проверку данного поля и его отправку на сервер | Нет |
Валидация на сервере
Валидацией на сервере должен заниматься тот фреймворк, с которым вы работаете. Библиотека ожидает в качестве ответа объект, ключи которого - это названия команд, а значения - это параметры команды. Так, команда отображения ошибок валидации называется validation_errors
, а в качестве её параметров должен быть указан уже другой объект, ключами которого являются названия полей, а в качестве их значений должны содержаться одномерные массивы с текстами ошибок валидации, которые были не пройдены.
Говоря другими словами, логика должна быть примерно следующая: если валидация полей не прошла, то сервер возвращает JSON-ответ с командой отображения ошибок. Если же валидация прошла успешно, сервер возвращает JSON-ответ с другими командами, например, редиректит пользователя на страницу сообщения об успешной регистрации. Пример подготовки ответа на PHP:
// Валидируем данные, сохраняем результат валидации в $validation_success
if ($validation_success === false) {
// Данные невалидны
$json_response = [
'validation_errors' => [
'field_name' => array('error_message_1','error_message_2'),
'second_field_name' => array('error_message')
// и так далее
]
]);
} else {
// Здесь пишем тот код, который нужно выполнить на сервере..
// И подготавливаем клиенту ответ с командами:
$json_response = [
'redirect' => '/registration_success'
];
}
// Возвращает ответ клиенту
echo json_encode($json_response);