HTML::Template::Associate::FormValidator - HTML::Template::Associate Data::FormValidator plugin
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. use CGI qw/:standard/; use Data::FormValidator; use HTML::Template; use HTML::Template::Associate; my $cgi = CGI->new; #for testing purposes we can add some input to our cgi object $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 ] #not needed but just illustrated } ); my $template = HTML::Template->new( filename => 'test.tmpl', associate => [ $cgi, $associate ] ); print $template->output; #and in our test.tmpl file we could have 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.
Map Data::FormValidator::Results object into a form suitable for use by HTML::Template
See above.
If you find any please report to author.
See License.
Alex Pavlovic alex.pavlovic@taskforce-1.com http://www.taskforce-1.com
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module.
HTML::Template::Associate HTML::Template::Associate::DBI perl(1).
Usage : $associate->init ( $results, $extra_arguments ); Purpose : Initiliazes the object Returns : concrete object instance Argument : Data::FormValidator::Results instance and extra hash of arguments passed to factory Comments : Factory class will call this method automatically during concrete object construction : Error is thrown depending whether the passed in results object is of correct type See Also : HTML::Template::Associate Data::FormValidator::Results
Usage : used internally to assign various prefixes/names to variables and loops
To install HTML::Template::Associate, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTML::Template::Associate
CPAN shell
perl -MCPAN -e shell install HTML::Template::Associate
For more information on module installation, please visit the detailed CPAN module installation guide.