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

Post on 15-Jan-2015

3.474 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

Vlad Savitsky Forms 2 DrupalCampKyiv 2010

TRANSCRIPT

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

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

Сборка формы

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

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

Рендер формы

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

John VanDyk & Matt Westgate «Pro Drupal Development»

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

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

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

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

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

}

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

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

}

#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;}

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

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

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

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

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

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

Спасибо!

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

+38094 928 0632ICQ: 205535814

Skype: vlad_savitskyvlad.savitsky@gmail.com

top related