Webform: своя валидация полей и значения по умолчанию
В этом посте решил собрать и объединить несколько плюшек по работе с модулем webform.
Валидация полей формы
Почти на всех своих проектах приходится использовать этот модуль для создания различных форм обратной связи, "заказать звонок" и т.д. Например, в форме "заказать обратный звонок" всегда есть вероятность что в поле "Номер телефона" кто-то введет "1234567" и тогда гадай что это за номер? городской? мобильный? какой оператор?
Поэтому уже взял за практику выставлять значение по умолчанию "+375 ХХ ХХХ-ХХ-ХХ", которое пользователь видит и уже что-то в этом ключе вводит. И чтобы пользователь не засабмитил форму со значением по умолчанию:
function mymodule_form_alter(&$form, &$form_state, $form_id) { if($form_id=='webform_client_form_XX') { $form['#validate'][]='mymodule_validate'; return $form; } } function mymodule_validate($form,&$form_state) { $phoneval=$form_state['values']['submitted']['phone'] if($phoneval=='' || $phoneval == '+375 ХХ ХХХ-ХХ-ХХ') { form_set_error('phone','Укажите номер телефона'); } }
Динамическое значение по умолчанию для полей
Иногда приходится создавать формы (например, "заказ тура") и выводить их блоком на странице тура. Чтобы не заставлять пользователя писать, какой тур он хочет заказать, а цеплять его автоматически из заголовка просматриваемой страницы было решено добавить еще одно поле "тип тура" и запретить его редактирование.
Далее маленький кусок кода, который и делает немного магии:
function mymodule_form_alter(&$form, &$form_state, $form_id) { if($form_id=='webform_client_form_XX') { if ($node = menu_get_object()) { $form['submitted']['tip_tura']['#default_value'] = $node->title; } }
Вуаля :)
Комментарии
Подскажите, пожалуйста, в какой файл необходимо вставить данный код, чтобы заработало? Заранее огромное спасибо за ответ!!!
/blog/drupal/256
используй вместо hook_form_alter — hook_form_FORM_ID_alter, меньше оверхед будет
Добавить комментарий