Чтобы облегчить создание форм в web-приложениях, существуют различные библиотеки. Одна из них HTML_QuickForm2 и ее доработка jQuickForm которая должна была подружить, этот построитель форм с jQuery Validation Plugin. Вышло на мой взгляд не плохо, но слишком наворочено. К тому же автор давно не развивал это дополнение, последний раз когда я скачивал этот пакет, не работала клиентская валидация, а ведь изначально именно для этого и был разработанн этот пакет.
Я знаю что в разных фреймворках, есть свои библиотеки для облегчения работы с формами. Как правило без клиентской валидации. Я тоже написал свой класс для построения форм, но он требует доработки.
У всех этих "помошников" построителей форм, есть минусы - 1. Необходимо разбиратся с интерфейсами классов, как правило, сделано удобно, разобраться можно быстро 2. Сложности кастомизации, изменения дизайна форм 3. Все эти надстройки жрут ресурсы
После размышлений над этим, я создал небольшой класс, который занимается только валидацией, правила задаются аналогично jQuery Validation Plugin. Объект этого класса создает необходимый код JS для валидации на стороне клиента (если нужно) и также проверяет формы на стороне сервера по тем же правилам. Привожу пример -
<?php
header("Content-Type: text/html; charset=utf-8");
require 'valid/Valid.php';
require 'valid/ValidLang.php';
$oValid = new Valid($l);
$oValid->addRule('login', 'required');
$oValid->addRule('login', 'minlength', 5);
$oValid->addRule('pass', 'required');
$oValid->addRule('pass', 'minlength', 5);
$oValid->addRule('re_pass', 'equalTo', 'pass');
$oValid->addRule('email', 'required');
$oValid->addRule('email', 'email');
if (isset($_POST['login'])) {
if ($oValid->check()) {
// Здесь можно проверить дополнительно, на повторный логин и мыло например
echo 'Валидация успешна';
// Сохраняем данные, редиректим если надо
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valid - mini validator</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="STYLESHEET" type="text/css" href="css/eform.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
!window.jQuery && document.write('<script src="js/jquery-1.4.3.min.js"><\/script>');
</script>
<script type="text/javascript" src="js/jquery.validate.pack.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
</head>
<body>
<form action="index.php" method="post" name="reg_form" id="reg_form" class="eForm">
<fieldset>
<legend><?php echo $l['index']['registration']; ?></legend>
<p>
<label for="login"><?php echo $l['index']['login']; ?></label>
<input type="text" id="login" name="login" value="<?php echo $oValid->getReq('login');?>" />
<?php echo $oValid->getErr('login');?>
</p>
<p>
<label for="pass"><?php echo $l['index']['pass']; ?></label>
<input type="password" id="pass" name="pass" value="" />
<?php echo $oValid->getErr('pass');?>
</p>
<p>
<label for="re_pass"><?php echo $l['index']['re_pass']; ?></label>
<input type="password" id="re_pass" name="re_pass" value="" />
<?php echo $oValid->getErr('re_pass');?>
</p>
<p>
<label for="email"><?php echo $l['index']['email']; ?></label>
<input type="text" id="email" name="email" value="<?php echo $oValid->getReq('email');?>" />
<?php echo $oValid->getErr('email');?>
</p>
<p>
<input type="submit" value="<?php echo $l['index']['registration']; ?>" class="noresize submit"/>
</p>
</fieldset>
</form>
<?php echo $oValid->getJS('reg_form'); ?>
</body>
</html>
Пример реализации можно посмотреть в моем mini MVC framework, там уже реализована регистрация, авторизация - mFram
Комментариев нет:
Отправить комментарий