Изменение форм в Drupal 7 с помощью hook_form_alter(). Создаем свое правило валидации.

image

01.06.13
Comments 1

В этой статье мы научимся изменять стандартные или генерированные дополнительными модулями формы в Drupal 7 с помощью хука hook_form_alter. Для примера мы наложим свое правило валидации в форму добавления стандартного типа материала “Page”.  Для того чтобы быстро находить нужные значение нужно установить модуль Devel, при написании этого модуля я использовал функцию dpm() которую предоставляет Devel для отладки нашей формы. Надеюсь вы уже знаете как создавать простейшие модули для Drupal 7.

/**
 * Применяем hook_form_alter().
 */
function mymod_form_alter(&$form, &$form_state, $form_id) {
 switch ($form_id) {
  case 'page_node_form':{ // Выбираем форму по ее id
   dpm($form); // Функция отладки модуля Devel, просматриваем элементы для измения 
   $form['#validate'][]='my_validate'; // Изменяем правило валидации для формы
   break;
  }
 }
}

function my_validate(&$form, &$form_state){ // Пишем свою функцию валидации
 dpm($form_state); // Функция отладки модуля Devel,  Ищем правила валидации
 if(is_numeric($form_state['input']['title'])){ // Если значение поля Title целое число выводим ошибку
 form_set_error('title', t('Error')); // Первый параметр передает имя поля чтобы обвести его красным, второй текст ошибки
 }
}

Комментарии

Тимур 21.11.13

Привет напиши как добавлять свои поля в формы и записывать их значения в базу?

Комментировать