пятница, 1 февраля 2013 г.

Валидация форм в 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; }

Комментариев нет:

Отправить комментарий