This class is not intended to be used directly but rather through a
HTML::Template::Associate. It provides concrete class functionality, it
will take Data::FormValidator::Results object and reconstruct data structure
to one appropriate
for
use
by the HTML::Template.
my
$cgi
= CGI->new;
$cgi
->param(
'fullname'
,
'John Doe'
);
$cgi
->param(
'phone'
, 6041112222 );
$cgi
->param(
'email'
,
'invalid@email'
);
my
$input_profile
= {
optional
=> [
qw( company fax country )
],
required
=> [
qw( fullname phone email address city state zipcode )
],
constraints
=> {
email
=>
'email'
,
fax
=>
'american_phone'
,
phone
=>
'american_phone'
,
zipcode
=>
'/^\s*\d{5}(?:[-]\d{4})?\s*$/'
,
state
=>
"state"
,
},
defaults
=> {
country
=>
"Canada"
},
msgs
=> {
prefix
=>
'error_'
,
missing
=>
'Not Here!'
,
invalid
=>
'Problematic!'
,
invalid_seperator
=>
' <br /> '
,
format
=>
'ERROR: %s'
,
any_errors
=>
'some_errors'
,
}
};
my
$validator
= Data::FormValidator->new;
my
$results
=
$validator
->check (
scalar
$cgi
->Vars,
$input_profile
);
my
$associate
= HTML::Template::Associate->new( {
target
=>
'FormValidator'
,
results
=>
$results
,
extra_arguments
=> [
$validator
]
} );
my
$template
= HTML::Template->new(
filename
=>
'test.tmpl'
,
associate
=> [
$cgi
,
$associate
]
);
print
$template
->output;
Valid Fields:<br>
<TMPL_LOOP NAME=VALID_FIELDS>
Field Name: <TMPL_VAR NAME=FIELD_NAME><br>
Field Value: <TMPL_VAR NAME=FIELD_VALUE><br>
</TMPL_LOOP>
Missing Fields:<br>
<TMPL_LOOP NAME=MISSING_FIELDS>
Field Name: <TMPL_VAR NAME=FIELD_NAME><br>
Field Value: <TMPL_VAR NAME=FIELD_VALUE><br>
</TMPL_LOOP>
<TMPL_IF NAME=INVALID_phone>
Phone: <TMPL_VAR NAME=
"phone"
> you supplied is invalid.
</TMPL_IF>
<TMPL_IF NAME=MISSING_city>
City name is missing, please fix this.
</TMPL_IF>
<!-- We can also access
our
normal field names
since
$cgi
object was passed as associate as well -->
I think <TMPL_VAR NAME=country> is very big country.
<!-- Optional
use
of Data::FormValidator::Results msgs interface -->
Message Fields:
<TMPL_LOOP NAME=MSGS_FIELDS>
Field Name: <TMPL_VAR NAME=FIELD_NAME><br>
Field Value: <TMPL_VAR NAME=FIELD_VALUE><br>
</TMPL_LOOP>
<TMPL_IF NAME=MSGS_error_city>
Our
default
error message set in the profiling code is:
<TMPL_VAR NAME=MSGS_error_city>
</TMPL_IF>
The following will become available to your associate object/template:
Key / Perl / Template
Arrays / Loops
VALID_FIELDS /
$associate
->param(
q{VALID_FIELDS}
); / <TMPL_LOOP NAME=VALID_FIELDS>
MISSING_FIELDS /
$associate
->param(
q{MISSING_FIELDS}
); / <TMPL_LOOP NAME=MISSING_FIELDS>
INVALID_FIELDS /
$associate
->param(
q{INVALID_FIELDS}
); / <TMPL_LOOP NAME=INVALID_FIELDS>
UNKNOWN_FIELDS /
$associate
->param(
q{UNKNOWN_FIELDS}
); / <TMPL_LOOP NAME=UNKNOWN_FIELDS>
MSGS_FIELDS /
$associate
->param(
q{MSGS_FIELDS}
); / <TMPL_LOOP NAME=MSGS_FIELDS>
Variables
VALID_ParamA /
$associate
->param(
q{VALID_ParamA}
); / <TMPL_VAR NAME=VALID_ParamA>
MISSING_ParamB /
$associate
->param(
q{MISSING_ParamB}
); / <TMPL_VAR NAME=MISSING_ParamB>
INVALID_ParamC /
$associate
->param(
q{INVALID_ParamC}
); / <TMPL_VAR NAME=INVALID_ParamC>
UNKNOWN_ParamD /
$associate
->param(
q{UNKNOWN_ParamD}
); / <TMPL_VAR NAME=UNKNOWN_ParamD>
MSGS_prefix_ParamE /
$associate
->param(
q{MSGS_prefix_ParamE}
); / <TMPL_VAR NAME=MSGS_prefix_ParamE>
Inside Array / Loops we have the following structure:
Perl
VALID_FIELDS
=> [ {
FIELD_NAME
=> X },
FIELD_VALUE
=> Y }, ... ]
Template
<TMPL_LOOP NAME=VALID_FIELDS>
<TMPL_VAR NAME=FIELD_NAME>
<TMPL_VAR NAME=FIELD_VALUE>
</TMPL_LOOP>
For further explanation on what the VALID,MISSING,INVALID,UNKNOWN AND MSGS are
please refer to Data::FormValidator::Results. Please note that MSGS
works somewhat diffrently then others and corresponds to
$results
->msgs([
$config
])
interface.