20
Полный контроль на Drupal-формами

Forms 2 - Drupal 6 - Полный контроль над формами

Embed Size (px)

DESCRIPTION

Vlad Savitsky Forms 2 DrupalCampKyiv 2010

Citation preview

Page 1: Forms 2 - Drupal 6 - Полный контроль над формами

Полный контроль на Drupal-формами

Page 2: Forms 2 - Drupal 6 - Полный контроль над формами
Page 3: Forms 2 - Drupal 6 - Полный контроль над формами

Подготовка формы

Page 4: Forms 2 - Drupal 6 - Полный контроль над формами

Сборка формы

Page 5: Forms 2 - Drupal 6 - Полный контроль над формами

Валидация формы

Page 6: Forms 2 - Drupal 6 - Полный контроль над формами

Сохранение формы

Page 7: Forms 2 - Drupal 6 - Полный контроль над формами

Рендер формы

Page 8: Forms 2 - Drupal 6 - Полный контроль над формами
Page 9: Forms 2 - Drupal 6 - Полный контроль над формами

Как работает кеширование форм

John VanDyk & Matt Westgate «Pro Drupal Development»

• http://www.drupalbook.com/errata2?page=4

Page 10: Forms 2 - Drupal 6 - Полный контроль над формами
Page 11: Forms 2 - Drupal 6 - Полный контроль над формами
Page 12: Forms 2 - Drupal 6 - Полный контроль над формами
Page 13: Forms 2 - Drupal 6 - Полный контроль над формами

Чем можно управлять?

Структурой элементов формы Валидацией формы Сабмитом формы Изменять форму после полной сборки Менять можно до и после темизации Управлять темизацией формы

Page 14: Forms 2 - Drupal 6 - Полный контроль над формами

Изменение форм из модуля

function MODULE_form_alter(&$form, &$form_state, $form_id) {//Добавляем свой submit-обработчик во все формы$form['#submit'][] = '_node_wizard_form_submit';

}

Page 15: Forms 2 - Drupal 6 - Полный контроль над формами

Изменение формы по FORM_ID

function MODULE_form_FORM_ID_alter(&$form, &$form_state) {//Добавляем свой submit-обработчик во все формы$form['#submit'][] = '_node_wizard_form_submit';

}

Page 16: Forms 2 - Drupal 6 - Полный контроль над формами

#after_build $form['file_directory_path'] = array( '#type' => 'textfield', '#title' => t('File system path'), '#default_value' => file_directory_path(), '#maxlength' => 255, '#description' => t('A file system ... on an existing site.'), '#after_build' => array('system_check_directory'), );

function MODULE_form_alter($form, &$form_state) { $form['#after_build'][] => 'system_check_directory';}

function system_check_directory($form_element, &$form_state) { file_check_directory($form_element['#value'],

FILE_CREATE_DIRECTORY, $form_element['#parents'][0]); return $form_element;}

Page 17: Forms 2 - Drupal 6 - Полный контроль над формами

Смена веса модуляВ файле MODULE.install/** * Implementation of hook_install(). */function MODULE_install() { db_query("UPDATE {system} SET weight = 1111 WHERE name

= 'MODULE'"); //Отрицательный вес - модуль имеет более высокий //приоритет и выполнится раньше, а более высокое //значение веса (положительное) - модуль имеет более // низкий приоритет исполнения. //Таким образом модули ранжируются по весу на шкале от // минус бесконечности до плюс бесконечность. //Начало выполнения - это минус бесконечность и конец - // плюс бесконечность. Идём от минуса к плюсу.}

Page 18: Forms 2 - Drupal 6 - Полный контроль над формами

Хук форм_альтер не вызывается при перестроении формы, если были ошибки валидации

Когда вызывается #after_build

Page 19: Forms 2 - Drupal 6 - Полный контроль над формами

Полезные ссылки

• http://api.drupal.ru/api/group/form_api/6

Page 20: Forms 2 - Drupal 6 - Полный контроль над формами

Спасибо!

Влад Савицкий

+38094 928 0632ICQ: 205535814

Skype: [email protected]