Валидация форм в Joomla (Joomla form validation)
В процессе написания своих расширений для CMS Joomla очень часто приходится использовать html формы для получения тех или иных данных от пользователя и последующей их обработки. Неправильно написанная форма может запросто испортить впечателние о Вашем сайте. До сих пор не редки случаи когда пользователь, (при заполнении формы, допустивший какую-либо незначительную ошибку) после отправки формы, вынужден набирать все заново. А между тем, «прикрутить» валидацию к форме не так уж сложно. Благо Joomla обладает всеми необходимыми средствами, чтобы облегчить жизнь разработчику. Итак начнем...
Все нижеизложенное, справедливо для Joomla2.5, хотя возможно и применимо для более поздних версий.
- Подключаем файл валидации validate.js, добавив в код строку
JHTML::_('behavior.formvalidation');
- Затем укажем скрипту, что необходимо обрабатывать именно эту форму, добавив соответствующий класс к тегу <form>
<form name="add_new_record" action="index.php" method="post">
- Далее устанавливаем соответствующий клас для всех полей формы нуждающихся в проверке данных перед отправкой.
<input type="text" name="item_name" size="10" value="" />
Применение данного класса свидетельствует о том что данное поле должно быть обязательно заполнено или же (в случае с радио кнопками) какая-либо опция должна быть отмечена пользователем.
Бывают случаи, когда поле может оставаться пустым (читай необязательным к заполнению), но в случае его заполнения необходима проверка на содержание. Например...
Проверка на число
<input type="number" name="item_height" size="10" value="" />
Проверка на E-mail
<input class="inputbox validate-email" type="text" name="email" value="">
Если это поле обязательно к заполнению, то не трудно догадаться что код будет таким
<input class="inputbox required validate-email" type="text" name="email" value="">
Вы можете использовать следующие классы:
- required
- validate-username
- validate-password
- validate-numeric
- validate-email
Заключительным шагом построения формы будет присвоение класса кнопке Отправки формы.
<input validate" type="submit" name="items_cat">
Если этого не сделать, то данные все равно будут отправлены в обработчик, несмотря на то, что подсветка неправильно заполненых полей работает.
И в завершение, пожалуй стоит добавить, что для всех полей не прошедших ваплидацию Joomla добавляет класс invalid. В некоторых шаблонах этот класс встроен по умолчанию (напр. beez_20) Если таблицы стилей Вашего шаблона не содержат его — добавьте вручную следующий код:
.invalid { border-color: red !important; }