Forms API

Tutorial for the Forms API.

Process Diagram

The workflow for Forms API:

Forms API Diagram

Define

function legal_display_fields() { $form = array(); $conditions = legal_get_conditions(); $form['id'] = array( '#type' => 'value', '#value' => $conditions['id'], ); $form['legal'] = array( '#type' => 'fieldset', '#title' => t('Terms and Conditions of Use'), '#weight' => 29, ); $form['legal']['conditions'] = array( '#type' => 'textarea', '#title' => t('Terms & Conditions'), '#default_value' => $conditions['conditions'], '#value' => $conditions['conditions'], '#rows' => 10, '#weight' => 0, '#attributes' => array('readonly' => ''), ); $form['legal']['legal_accept'] = array( '#type' => 'checkbox', '#title' => t('Accept Terms & Conditions of Use'), '#default_value' => 0, '#weight' => 50, '#required' => TRUE, ); $form['#after_build'] = array('legal_preview'); $form['preview'] = array( '#type' => 'button', '#value' => t('Preview'), ); $form['save'] = array( '#type' => 'submit', '#value' => t('Save'), ); $output = drupal_get_form('legal_administration', $form); return $output; }

Validate

function legal_administration_validate($form_id, $form_values) { if ( empty($form_values['conditions']) ) form_set_error('conditions', t('Terms & Conditions must be entered.')); return; }

Submit

function legal_administration_submit($form_id, $form_values) { db_query("INSERT INTO {legal_conditions} (tc_id, conditions, date, extras, changes) VALUES (NULL, '%s', %d, '%s', '%s')", $form_values['conditions'], time(), serialize($form_values['extras']), $form_values['changes']); drupal_set_message (t('Terms & Conditions have been saved.')); return; }