Webfom - модуль Drupal. Создание форм.

Call of Cthrupal

Webform — один из полезнейших модулей для CMS Drupal. Позволяет создавать формы (можно также назвать их анкетами или опросниками) с широкими возможностями настройки. Вот некоторые возможности модуля:

  • различные типы полей и возможность их группировки: дата, e-mail, скрытое, выпадающий список, текстовое поле, строка, время, файл, разрыв страницы (многостраничная форма) и др;
  • показ сообщения или страницы после заполнения;
  • хранение всех результатов заполнений с данными пользователя;
  • ограничение возможности (по ролям) и частоты заполнения пользователем;
  • уведомление по почте о заполнении с выбором полей для отправки в самом письме, а также выбор условных получателей сообщения (автоматически, и вручную);
  • валидация, то есть проверка данных (об этом ниже);
  • обработка вводимых данных;

Валидация форм (Validation)

Валидация (validation) — проверка корректности введенных пользователем данных доставила мне немало трудностей изза банального отсутствия точной документации. При этом нужно то было самую малость, один несложный пример. Этот пробел я и хочу восполнить. Вот несложная форма на сайте компании «АвтоТек»

А вот и код валидации:

<?php
if(strlen($form_values['submitted_tree']['phone']) < 16)
{
   form_set_error('submitted][phone', t('Ошибка в номере телефона. Обратите внимание на образец.'));
}
elseif($form_values['submitted_tree']['phone'][0] != '+' or $form_values['submitted_tree']['phone'][1] != '7' or $form_values['submitted_tree']['phone'][2] != '(' or $form_values['submitted_tree']['phone'][6] != ')' or $form_values['submitted_tree']['phone'][10] != '-' or $form_values['submitted_tree']['phone'][13] != '-')
{
   form_set_error('submitted][phone', t('Ошибка в номере телефона. Обратите внимание на образец.'));
}
elseif(strlen($form_values['submitted_tree']['vin']) < 17)
{
   form_set_error('submitted][vin', t('Ошибка в Идентификационном номере (vin) (число символов меньше 17). Проверьте, пожалуйста, правильность написания.'));
}
elseif((strlen($form_values['submitted_tree']['engine']) < 12) and (strlen($form_values['submitted_tree']['engine']) > 0))
{
   form_set_error('submitted][engine', t('Ошибка в "Двигатель №" (число символов меньше 12). Проверьте, пожалуйста, правильность написания.'));
}
?>

Код не сложен, названия полей интуитивно можно связать с полями на форме. Буду рад ответить на вопросы.

вернуться назад