Class::DBI::AsForm - Produce HTML form elements for database columns |
Class::DBI::AsForm - Produce HTML form elements for database columns
package Music::CD; use Class::DBI::AsForm; use base 'Class::DBI'; use CGI; ...
sub create_or_edit { my $class = shift; my %cgi_field = $class->to_cgi; return start_form, (map { "<b>$_</b>: ". $cgi_field{$_}->as_HTML." <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>
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.
The module is a mix-in which adds two additional methods to your
Class::DBI
-derived class.
This returns a hash mapping all the column names of the class to HTML::Element objects representing form widgets.
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.
Version 1.x of this module returned raw HTML instead of
HTML::Element
objects, which made it harder to manipulate the
HTML before sending it out. If you depend on the old behaviour, set
$Class::DBI::AsForm::OLD_STYLE
to a true value.
Tony Bowden
Simon Cozens
Please direct all correspondence regarding this module to: bug-Class-DBI-AsForm@rt.cpan.org
Copyright 2003-2004 by Simon Cozens / Tony Bowden
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
the Class::DBI manpage, the Class::DBI::FromCGI manpage, the HTML::Element manpage.
Class::DBI::AsForm - Produce HTML form elements for database columns |