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

3,770 views
3,667 views

Published on

Vlad Savitsky
Forms 2
DrupalCampKyiv 2010

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,770
On SlideShare
0
From Embeds
0
Number of Embeds
133
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Полный контроль на Drupal-формами
  2. 3. Подготовка формы
  3. 4. Сборка формы
  4. 5. Валидация формы
  5. 6. Сохранение формы
  6. 7. Рендер формы
  7. 9. Как работает кеширование форм <ul><li>John VanDyk & Matt Westgate «Pro Drupal Development» </li></ul><ul><li>http://www.drupalbook.com/errata2?page=4 </li></ul>
  8. 13. Чем можно управлять? <ul><li>Структурой элементов формы </li></ul><ul><li>Валидацией формы </li></ul><ul><li>Сабмитом формы </li></ul><ul><li>Изменять форму после полной сборки </li></ul><ul><li>Менять можно до и после темизации </li></ul><ul><li>Управлять темизацией формы </li></ul>
  9. 14. Изменение форм из модуля function MODULE _form_alter(&$form, &$form_state, $form_id) { //Добавляем свой submit-обработчик во все формы $form['#submit'][] = '_node_wizard_form_submit'; }
  10. 15. Изменение формы по FORM_ID function MODULE _form_ FORM_ID _alter(&$form, &$form_state) { //Добавляем свой submit-обработчик во все формы $form['#submit'][] = '_node_wizard_form_submit'; }
  11. 16. #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; }
  12. 17. Смена веса модуля В файле MODULE.install /** * Implementation of hook_install(). */ function MODULE_install() { db_query(&quot;UPDATE {system} SET weight = 1111 WHERE name = 'MODULE'&quot;); //Отрицательный вес - модуль имеет более высокий //приоритет и выполнится раньше, а более высокое //значение веса (положительное) - модуль имеет более // низкий приоритет исполнения. //Таким образом модули ранжируются по весу на шкале от // минус бесконечности до плюс бесконечность. //Начало выполнения - это минус бесконечность и конец - // плюс бесконечность. Идём от минуса к плюсу. }
  13. 18. <ul><li>Хук форм_альтер не вызывается при перестроении формы, если были ошибки валидации </li></ul><ul><li>Когда вызывается #after_build </li></ul>
  14. 19. Полезные ссылки <ul><li>http://api.drupal.ru/api/group/form_api/6 </li></ul>
  15. 20. Спасибо! Влад Савицкий +38094 928 0632 ICQ: 205535814 Skype: vlad_savitsky [email_address]

×