NAME

Class::DBI::AsForm - Produce HTML form elements for database columns

SYNOPSIS

package Music::CD;
use Class::DBI::AsForm;
use base 'Class::DBI';
use CGI qw/:standard/;
...

sub create_or_edit {
    my $class = shift;
    my %cgi_field = $class->to_cgi;
    return start_form,
           (map { "<b>$_</b>: ". $cgi_field{$_}." <br>" } $class->Columns),
           end_form;
}

# <form method="post"...>
# Title: <input type="text" name="Title" /> <br>
# Artist: <select name="Artist"> 
#           <option value=1>Grateful Dead</option>
#           ...
#         </select>
# ...
# </form>

DESCRIPTION

This module helps to generate HTML forms for creating new database rows or editing existing rows. It maps column names in a database table to HTML form elements which fit the schema. Large text fields are turned into textareas, and fields with a has-a relationship to other Class::DBI tables are turned into select drop-downs populated with objects from the joined class.

METHODS

The module is a mix-in which adds two additional methods to your Class::DBI-derived class.

to_cgi

This returns a hash mapping all the column names of the class to HTML snippets.

to_field($field [, $how])

This maps an individual column to a form element. The how argument can be used to force the field type into one of textfield, textarea or select; you can use this is you want to avoid the automatic detection of has-a relationships.

AUTHOR

Simon Cozens, simon@kasei.com

SEE ALSO

Class::DBI, Class::DBI::FromCGI.