CGI::FormBuilder::Template::Fast - FormBuilder interface to CGI::FastTemplate
my $form = CGI::FormBuilder->new(
fields => \@whatever,
template => {
type => 'Fast',
root => '/path/to/templates',
# use external files
define => {
form => 'form.txt',
field => 'field.txt',
invalid_field => 'invalid_field.txt',
},
# or define inline
define_nofile => {
form => '<html><head></head><body>$START_FORM
<table>$FIELDS</table>$SUBMIT $END_FORM</body></html>',
# etc.
},
},
);
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 corresponding to the lists that other engines have (e.g. fields
or options
lists in TT2
or Text::Template
).
CGI::FormBuilder, CGI::FormBuilder::Template, CGI::FastTemplate
Copyright (c) 2005-2006 Peter Eichman <peichman@cpan.org>. All Rights Reserved.
Maintained as part of CGI::FormBuilder
by Nate Wiger <nate@wiger.org>.
This module is free software; you may copy this under the terms of the GNU General Public License, or the Artistic License, copies of which should have accompanied your Perl kit.