/**
  * The default controller
  * @return void
  */
 public function index()
 {
     /**
      * Load the helper file
      */
     TINA_MVC\include_helper('form');
     /**
      * Create the new form
      */
     $form = new TINA_MVC\form('my_form');
     /**
      * Adds a text field
      */
     $text_field_1 = $form->add_field('text_field_1', $type = 'TEXT');
     /**
      * It is possible to retrieve the $_POST value for a field without checking if the form has been posted
      * using the get_posted_value() method.
      */
     $text_message = $form->add_text('posted_message', 'The $_POST value for \'Text Field 1\' is: "' . $text_field_1->get_posted_value() . '"');
     /**
      * Adds a validation rule
      *
      * All validation rules are of the form array( 'rule_name' => parameters ). Check the form helper file
      * for classes called validate_* for rules, parameters and for how to add your own validation rules.
      */
     $text_field_1->add_validation(array('required' => NULL, 'min_length' => 3, 'max_length' => 7));
     /**
      * The same using method chaining...
      */
     $text_field_2 = $form->add_field('text_field_2', $type = 'TEXT')->add_validation(array('required' => NULL));
     /**
      * Adding a field showing all available parameters:
      *
      * $name - the field name. Used as a key in the array of posted data returned by $form->get_posted_data().
      * $type - see the field_* classes in the form helper file for a complete list of fields (or see
      *         the samples in 08_form_helper_intro)
      * $caption - The label. Default label is based on the $name parameter. For example 'first_name' => 'First Name'
      * $db_table - used to group fields. For example, posted fields grouped according to $db_table = 'my_table' can
      *         be retrieved using $form->get_posted_db_data('my_table') (gets data with keys based on the $db_field value)
      *         or $form->get_posted_data('my_table') (gets data with keys based on the field $name value)
      * $db_field - the database field name (if different from the $name value). Use with $form->get_posted_db_data()
      * $default_value
      * $extra_attribs - a string (for example 'attribute="value"') or array of strings
      */
     $text_field_3 = $form->add_field('text_field_3', 'text', 'Please enter a value for this field', 'my_table', 'my_field', 'Default value', 'style="color: white; background: black;"');
     /**
      * Similar to above, but using method chaining and passing several extra html attributes to the input
      */
     $text_field_4 = $form->add_field('field_4', $type = 'TEXT')->set_caption('Field Four')->set_db_table('my_table')->set_db_field('field_four')->set_default_value('Another default')->set_extra_attribs('style="background: #ccc;"')->set_extra_attribs('title="Like a tooltip, touched for the very first time..."');
     /**
      * Extra attributes can be passed as an array too
      */
     $text_field_5 = $form->add_field('field_5', $type = 'TEXT')->set_db_table('my_table')->set_extra_attribs(array('style="font-style: italic;"', 'title="Another title attribute"'));
     /**
      * A submit button
      */
     $f_submit = $form->add_field('submit_field', $type = 'SUBMIT', $caption = 'This is the submit caption');
     /**
      * A reset button
      */
     $f_reset = $form->add_field('reset_field', $type = 'RESET', $caption = 'This is the resetcaption');
     /**
      * Returns an array of posted data, FALSE if the form has not been posted.
      */
     if ($posted_data_1 = $form->get_posted_data()) {
         /**
          * $posted_data_1 is an array of posted values. Keys are the field names. Values are taken from fields with a blank 'db_table' value
          */
         $content = 'Posted Data: retrieved with $form->get_posted_data()<br />';
         $content .= "<pre>" . print_r($posted_data_1, TRUE) . "</pre><br />";
         /**
          * Returns an array of posted values. Keys are the field names. Values are taken from fields where 'db_table' = 'my_table'
          */
         $posted_data_2 = $form->get_posted_data('my_table');
         $content .= "Posted Data: retrieved with \$form->get_posted_data('my_table')<br />";
         $content .= "<pre>" . print_r($posted_data_2, TRUE) . "</pre><br />";
         /**
          * Returns an array of posted values. Keys are taken from 'db_field' value. Values are taken from fields with a blank 'db_table' value
          */
         $posted_data_3 = $form->get_posted_db_data();
         $content .= "Posted Data: retrieved with \$form->get_posted_db_data()<br />";
         $content .= "<pre>" . print_r($posted_data_3, TRUE) . "</pre><br />";
         /**
          * Returns an array of posted values. Keys are taken from 'db_field' value. Values where fields 'db_table' = 'my_table'
          */
         $posted_data_4 = $form->get_posted_db_data('my_table');
         $content .= "Posted Data: retrieved with \$form->get_posted_db_data('my_table')<br />";
         $content .= "<pre>" . print_r($posted_data_4, TRUE) . "</pre><br />";
         /**
          * Generally you process your form here and finish off with a wp_redirect() and exit()
          */
         // wp_redirect( 'wherever' );
         // exit();
     } else {
         /**
          * Returns the HTML required to disply the form
          */
         $content = $form->render();
     }
     /**
      * Assign as template data
      */
     $this->add_var('view_html', $content);
     /**
      * Set the post (page) title and contents.
      */
     $this->set_post_title('Tina MVC New Form Helper Example');
     $this->set_post_content($this->load_view('test_form_2'));
 }