Joomla 1.5 содержит встроенный функционал для валидации форм. Вы можете это заметить попытавшись ввести в поле для email формы обратной связи что-нибудь неправильное.
Если научнее joomla 1.5 включает функцию JHTMLBehavior::formvalidation(), которая представляет из себя ни больше не меньше чем:
function formvalidation() { JHTML::script('validate.js' ); } |
Для формы:
- form-validate -> enable validation
- required
- validate-username
- validate-password
- validate-numeric
- validate-email
- validate-[custom] -> включение особенной валидации.
Если какое-либо поле не прошло валидацию, его метка получит css-класс invalid.
То есть если вы назначите, например, красный цвет для этого элемента ваши юзеры будут знать с каким полем проблема.
Пример формы в которой невозможен сабмит без верных данных в поле email:
<?php JHTMLBehavior::formvalidation(); ?> <script language="javascript"> function myValidate(f) { if (document.formvalidator.isValid(f)) { f.check.value='<?php echo JUtility::getToken(); ?>';//send token return true; } else { alert('Some values are not acceptable. Please retry.'); } return false; } </script> <form id="WV-form" method="post" class="form-validate" onSubmit="return myValidate(this);"> <input type="hidden" name="check" value="post"/> ... <input type="text" name="email" size="30" class="required validate-email"/> ... <input type="submit" value="Submit" /> </form> |
Для создания пользовательского условия проверки на валидность необходимо определить пользовательскую функцию проверки:
Window.onDomReady(function() { document.formvalidator.setHandler('birth', function(value) { regex=/^\d{4}(-\d{2}){2}$/; return regex.test(value); }) }) |
Теперь задав для поля класс validate-birth вы будете производить валидацию поля на предмет маски yyyy-mm-dd.
Это, конечно очень удобно, но как насчет валидации в серверной части?
Конечно есть, как пример Retrieving and Filtering GET and POST requests with JRequest::getVar.