Вы здесь

Contact форма - как убрать проверку на валидность почты

0

Стандартная форма хороша и проста, но не всегда у людей есть почтовый ящик, либо его не использует, но для связи они не против указывать телефон, однако его там не ввести, т.к. проверка на валидность происходит.
Webform ради этого ставить не хочется

Версия Drupal: 
7.x
Категория: 
Form API
Вопрос задан 30.08.2015 - 14:05

Ответы

2

Валидация e-mail происходит в contact_site_form_validate, а потом в contact_site_form_submit происходит отправка письма на этот e-mail.
Можно в hook_form_alter удалить эти стандартные функции валидации и сабмита, и задать свои:

function MODULE_form_alter(&$form, &$form_state, $form_id) {
  if($form_id == 'contact_site_form') {
    $form['#validate'] = array('custom_contact_site_form_validate');
    $form['#submit'] = array('custom_contact_site_form_submit');
  }
}

В свои функции custom_contact_site_form_validate и custom_contact_site_form_submit скопируйте содержимое оригинальных функций contact_site_form_validate и contact_site_form_submit, и удалите проверку e-mail, отправку письма.
Оригинальные функции находятся в /modules/contact/contact.pages.inc

Ответ дан 30.08.2015 - 14:37
0

Альтерим форму:

function MODULE_form_contact_site_form_alter(&$form, &$form_state) {
  unset($form['submitted']['FIELDNAME']['#needs_validation']);
}

Только точный путь до #needs_validation поля после сабмита надо уточнить.

Ответ дан 30.08.2015 - 17:31
Аватар пользователя SAM
SAM
212