Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 8 (more)

Form API 3

From eaton, 10 months ago

An overview of Drupal's form handling API, and a look at the chang more

2899 views  |  0 comments  |  8 favorites  |  165 downloads  |  2 embeds (Stats)
 

Groups/Events

Not added to any group/event

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 2899
on Slideshare: 2668
from embeds: 231* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Form API Til All Are One Thursday, September 20, 2007 1

Slide 2: The Olden Days • HTML • Helper Functions • Duplicate Work • Weak Security Thursday, September 20, 2007 2

Slide 3: Baby Jesus Node Forms Thursday, September 20, 2007 3

Slide 4: Form API Basics • Structured Data • Workflow • Best Practices • Render to HTML Thursday, September 20, 2007 4

Slide 5: Form API Basics 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; } Thursday, September 20, 2007 5

Slide 6: Form API Basics Thursday, September 20, 2007 6

Slide 7: Behind The Scenes • drupal_get_form(‘my_form’) • my_form() • $_POST, XSS, XSRF • my_form_validate() • my_form_submit() • drupal_render() Thursday, September 20, 2007 7

Slide 8: Stupid Form Tricks • hook_forms() Map form IDs • hook_elements() Add new form elements • hook_form_alter() Change any form Thursday, September 20, 2007 8

Slide 9: New In Drupal 6 Thursday, September 20, 2007 9

Slide 10: IM IN UR FORMZ RENAMIN UR BUTTONZ Thursday, September 20, 2007 10

Slide 11: • Button Handlers • $op is dead • Image buttons! • Buttons renamable • AHAH Thursday, September 20, 2007 11

Slide 12: WANT MAH FORM STATE Thursday, September 20, 2007 12

Slide 13: • Form State • Input Values • Workflow • Storage • No Globals Thursday, September 20, 2007 13

Slide 14: #MULTISTEP!?!11! DO NOT WANT Thursday, September 20, 2007 14

Slide 15: • All Forms • Just Set ‘rebuild’ • Forms Cached • Handlers In Control • Validation, too! Thursday, September 20, 2007 15

Slide 16: FORMZ CAT IZ BORED. WE HAZ EXAMPLE Thursday, September 20, 2007 16

Slide 17: Multiple Buttons function my_form() { ... $form['submit'] = array( '#type' => 'submit', '#title' => t('Your foo'), ); $form['delete'] = array( '#type' => 'submit', '#value' => t('Preview'), '#submit' => array('delete_submit'), '#validate' => array('delete_validate'), ); return $form; } Thursday, September 20, 2007 17

Slide 18: Multiple Buttons function delete_validate(&$form_state) { $values = $form_state['values']; if (empty($values['foo'])) { form_set_error('title', t('No! Bad!'); } } function delete_submit(&$form_state) { $values = $form_state['values']; // Delete Yo Stuff! $form_state['redirect'] = '<front>'; } Thursday, September 20, 2007 18

Slide 19: Multiple Buttons function my_button_handler(&$form_state) { $button = $form_state['clicked_button']; if ($button['#my_special_flag']) { // Do custom stuff here } } Thursday, September 20, 2007 19

Slide 20: Thursday, September 20, 2007 20

Slide 21: Multi-page Form function my_form($form_state) { if (empty($form_state[‘step’]) { $form_state[‘step’] = 1; } switch ($form_state[‘step’]) { case 1: ... case 2: ... case 3: ... } } Thursday, September 20, 2007 21

Slide 22: Multi-page Form function my_form_submit($form_state) { $values = $form_state[‘values’]; $form_state[‘step’] = $values[‘step’]++; if ($form_state[‘step’] < 3) { $form_state[‘rebuild’] = TRUE; } } Thursday, September 20, 2007 22

Slide 23: Here’s Where It Starts To Rock Thursday, September 20, 2007 23

Slide 24: Conditional CAPTCHA function my_form_alter(&$form, $form_id, $form_state) { $form['#validate'][] = 'captcha_validate'; if ($form_state['needs_captcha']) { // Add a captcha form! } } Thursday, September 20, 2007 24

Slide 25: Conditional CAPTCHA function captcha_validate(&$form_state) { $values = $form_state['values']; if (!empty($values['captcha'])) { if (captcha_failed($values['captcha'])) { form_set_error('title', t('No! Bad spammer!')); } } elseif (is_spammy($values)) { $form_state['needs_captcha'] = TRUE; $form_state['rebuild'] = TRUE; } } } Thursday, September 20, 2007 25

Slide 26: And Then the Ewoks Danced Thursday, September 20, 2007 26