Создание, продвижение сайтов
компьютерная поддержка
53-02-63

Drupal hook_form_FORM_ID_alter

25 августа 2016

Друпальский хук hook_form_FORM_ID_alter бывает нужен очень часто.
Данный хук следует применить, если нужно слегка(или не слегка) изменить любую форму на сайте. Это может быть форма добавления материала, форма модуля Webform или любого другого.
Для того чтобы реализовать хук - потребуется модуль. Как его написать - смотрите тут.
В нём можно сразу же реализовать hook_form_FORM_ID_alter, при условии, что вы знаете id формы. Если не знаете - то узнать его не составит труда.
Создайте функцию my_module_form_alter(&$form, &$form_state, $form_id) , где my_module - имя текущего модуля.
В ней напишите

print $form_id;

Если на сайте установлен и включен модуль Devel - то:

dpm($form_id);

И затем открывайте страницу, на которой есть форма, которую нужно изменить. Строчка кода, написанная в функции my_module_form_alter выведет на экран id формы.

function my_module_form_alter(&$form, &$form_state, $form_id){
  //dpm($form_id);
  print $form_id;
}

 

Теперь зная идентификатор формы можно реализовать hook_form_FORM_ID_alter. Пусть на экран вывелось webform_form_325. Тогда ваша функция будет выглядеть так:

function my_module_form_webform_form_325_alter(&$form, &$form_state, $form_id){
 
}

И эта функция будет вызываться каждый раз, когда друпал будет отрисовывать(или даже загружать) форму с id = webform_form_325. Ничего лишнего.
И уже в этом своём хуке развлекайтесь как хотите.
Если не работали с Form API - поглядите как оно работает, посмотрите официальную документацию.
Например добавить к полю title описание.

function my_module_form_webform_form_325_alter(&$form, &$form_state, $form_id){
  $form['title']['#description'] = 'Описание поля для глухонемых';
}

Добавить для формы валидатор.

function my_module_form_webform_form_325_alter(&$form, &$form_state, $form_id){
  $form['#validate'][] = 'my_custom_validator';
}
 
function my_custom_validator($form, &$form_state) {
  if (drupal_strlen($form_state['values']['title']) < 10) {
    form_set_error('title','Заголовок короче десяти символов.');
  }
 
  // Содержимое всех полей формы
  // dpm($form_state['values']);
  /*
  print '<pre>';
  print_r($form_state['values']);
  print '</pre>';
  */
}

Узнайте о нас больше:

Мы предлагаем широкий спект услуг по сайтам и компьютерной поддержке

Создание сайтов

Мы разрабатываем как простые сайты - визитки, так и индивидуальные проекты. Основная система разработки - CMS Drupal.

Узнать подробнее

Продвижение сайтов

Одно из основных направлений работы нашей компании - продвижение сайтов в Саратове и области. Мы поможем Вам с SEO - продвижением сайтов и настройкой и ведением контекстной рекламы в Яндекс Директ.

Бесплатная SEO-консультация

Компьтерная поддержка

Мы оказываем услуги компаниям и частным лицам в области настройки компьютерного оборудования:

  • Настройка роутеров и локальных сетей
  • Установка Windows
  • Оптимизация работы компьютеров
  • Лечение вирусов
  • Восстановление данных с жестких дисков
Узнать подробнее
Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности