Валидация формы

Комментарии ()

checkRule - js-функиця, которая выполняет валидацию даных на основе ранее заданых правил, а также вывод ошибок, если валидация прошла без ошибок. Если функция получает флаг, что ошибка есть, то   выводится  текст об ошибке возле елемента вводу формы, при этом html-страничка не перегружается, функция работает через ajax-запросы.

Принцип работы: функциии передается название групы правила, по которому будет выполнятся проверка

Этап 1) Клиентом выполняется первый ajax-request на сервер, в ответ получаем масив id елементов  формы, которые необходимо проверять (Модуль Form/form_check_rule_post.php)
Этап 2) Клиентом выполняется второй ajax-request на сервер - здесь уже выполнение проверки  данных.(Модуль Form/form_get_rule_elements_post.php). На сервере на основе заданых addRule-правил выполняется проверка.
Сервер возвращает клиєнту ajax-response в виде масива, вида:
array['flag']= true|false
array['error_main'] - текстовая информация о наличии ошибки
array['data'][element_id]['error_text'] - содержит масив с текстом, с описанием ошибок, где element_id - id елемента, для которого зафиксированга ошибка. Этот текст будет выводится возле поля ввода формы 

<script language="javascript">
$(document).ready(function(){
	$("#button_save").click(function(){
		if (checkRule('{rule_group}'))
		{
			$('#form_save').submit();
		}
	})
})
</script>

Данный js-код нужно вставлять во все шаблонах с формами. Переменная-шаблона {rule_group} - сюда нужно подставлять название группы правила (о этом ниже). 

Задание правил

Правила задаются в файле load_rule.php, пример:

$form->addRule('auth', 'login', 'required', 'rule_required_');
$form->addRule('auth', 'password', 'required', 'rule_required_');

Проверка правил

Правила проверяются в два этапа: на стороне клиента (ajax), и повторно в самом *_post.php файле:

$rule_group='article_edit';
$res = $form->checkRule($rule_group, $_POST);

if ($res['flag'] == false) {

    $user->redirect(_WWW . 'admin/' . _ACT . '/edit/' . $_POST['id'] . '/');

    exit;
}

Частный случай. Форма edit используется в случаи add и edit. Add - поле visible=0, Edit - поле visible=1 в таблице БД, пример:

$rule_group_type = $form->getTypeRuleGroup('articles', 'id', $_POST['id']);
$rule_group = 'article_' . $rule_group_type;
$res = $form->checkRule($rule_group, $_POST);

if ($res['flag'] == false) {
    $user->redirect(_WWW . 'admin/' . _ACT . '/edit/' . $_POST['id'] . '/');
    exit;
}

 


Webit.in.ua 2013