This engine adapts FormBuilder to use "CGI::FastTemplate". Please read these docs carefully, as the usage
differs from other template adapters in several important ways.
You will need to define three templates: "form", "field", and "invalid_field". You can use "define" to
point to external files (which is the recommended "CGI::FastTemplate" style), or "define_nofile"/
"define_raw" to define them inline. The templates in "define_nofile" take precedence over "define_raw",
and both of these take precedence over "define".
my $form = CGI::FormBuilder->new(
# ...
template => {
type => 'FastTemplate',
root => '/path/to/templates',
define => {
form => 'form.txt',
field => 'field.txt',
invalid_field => 'invalid_field.txt',
},
# or, you can define templates directly
define_nofile => {
form => '<html><head></head><body>$START_FORM<table>'
'$FIELDS</table>$SUBMIT $END_FORM</body></html>',
# etc.
},
},
# ...
);
If you use "define" with external templates, you will probably also want to define your template root
directory with the "root" parameter.
Within each of the field templates, the following variables are available:
$NAME # $field->name
$FIELD # $field->tag (HTML input tag)
$VALUE # $field->value (first value only!)
$LABEL # $field->label
$COMMENT # $field->comment
$ERROR # $field->error
$REQUIRED # $field->required ? 'required' : 'optional'
All the fields are processed in sequence; valid fields use the "field" template, and invalid fields the
"invalid_field" template. The result from each of these is appended into the $FIELDS variable, which you
should use in your "form" template. In the "form" template, you also have access to these variables:
$TITLE # title of the form
$START_FORM # opening form tag
$SUBMIT # the submit button
$RESET # the reset button
$END_FORM # closing form tag
$JS_HEAD # validation JavaScript
Note that since "CGI::FastTemplate" doesn't use anything other than simple scalar variables, there are no
variables corrosponding to the lists that other engines have (e.g. "fields" or "options" lists in "TT2"
or "Text::Template").