Forms API Inside OutOr, How I Learned to Stop Worrying
and Love the Nested Arrays
1
The Olden Days
In the beginning, there was HTML
Then, there were helper functions
Each form had to reinvent workflow
Each form had to reinvent security
The Node Form made Baby Jesus cry
2
Drupal’s Answer: Forms API
Build forms as structured data
Make the workflow automatic
Make ‘doing the right thing’ easy
When everything is done, render to HTML
3
So, What’s It Look Like? function my_form() { $form = array();
$form['foo'] = array( '#type' => 'textarea', '#title' => t('Your foo'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit yo foo'), );
return $form;}
4
So, What’s It Look Like?
5
How to Use Your Form
drupal_get_form('my_form')
my_form()
my_form_validate(...)
my_form_submit(...)
6
http://foo.com/my-form
Behind the Scenes
my_form_page()drupal_get_form('my_form')
my_form()(Here, magic happens*)
drupal_render($form)
7
Behind the Scenes (Part 2)
Here’s that form you gave me
my_form()
my_form_submit(...)
my_form_validate(...)
$_POST has data!
drupal_get_form('my_form')
8
Recap, With KittensCall drupal_get_form(‘my_form’)
The my_form() function builds an array
Drupal sanity checks $_POST
The my_form_validate() function validates
The my_form_submit() function processes
The drupal_render() function outputs the form.T. Keller
9
Build the initial form definition
drupal_process_form()
drupal_build_form()
hook_form_alter()
_form_builder()
Here’s the Magic
10
Here’s the Magic
_form_builder() does a lot!
Handles defaults
Weaves $_POST into the form
Builds $form_values
Inserts security tokens
11
“Special” Bits
hook_elements()
hook_form_alter()
drupal_execute()
12
Current Limitations
Dynamic AHAH/AJAX
Wizard-style forms
Too many special cases
AHAH/AJAX security!
13
The Future of Forms API
Form chunks
State management
AHAH/AJAX security
14
Whee!
15
Top Related