В процессе написания своих расширений для 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; }