15
Forms API Inside Out Or, How I Learned to Stop Worrying and Love the Nested Arrays 1

Form API Intro

Embed Size (px)

DESCRIPTION

An introduction to Drupal's FormAPI, as of version 5.

Citation preview

Page 1: Form API Intro

Forms API Inside OutOr, How I Learned to Stop Worrying

and Love the Nested Arrays

1

Page 2: Form API Intro

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

Page 3: Form API Intro

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

Page 4: Form API Intro

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

Page 5: Form API Intro

So, What’s It Look Like?

5

Page 6: Form API Intro

How to Use Your Form

drupal_get_form('my_form')

my_form()

my_form_validate(...)

my_form_submit(...)

6

Page 7: Form API Intro

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

Page 8: Form API Intro

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

Page 9: Form API Intro

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

Page 10: Form API Intro

Build the initial form definition

drupal_process_form()

drupal_build_form()

hook_form_alter()

_form_builder()

Here’s the Magic

10

Page 11: Form API Intro

Here’s the Magic

_form_builder() does a lot!

Handles defaults

Weaves $_POST into the form

Builds $form_values

Inserts security tokens

11

Page 12: Form API Intro

“Special” Bits

hook_elements()

hook_form_alter()

drupal_execute()

12

Page 13: Form API Intro

Current Limitations

Dynamic AHAH/AJAX

Wizard-style forms

Too many special cases

AHAH/AJAX security!

13

Page 14: Form API Intro

The Future of Forms API

Form chunks

State management

AHAH/AJAX security

14

Page 15: Form API Intro

Whee!

15