NAME CGI::Application::ValidateRM - Help validate CGI::Application run modes using Data::FormValidator SYNOPSIS use CGI::Application::ValidateRM; my ($results,$err_page) = $self->check_rm('form_display','_form_profile'); return $err_page if $err_page; DESCRIPTION CGI::Application::ValidateRM helps to validate web forms when using the CGI::Application framework and the Data::FormValidator module. check_rm This CGI::Application method takes two inputs, as follows: Return run mode This run mode will be used to generate an error page, with the form re-filled and error messages in the form. This page will returned as a second output parameter. The errors will be passed in as a hash reference, which can then be handed to a templating system for display. The fields should be prepared using Data::FormValidator's built-in support for returning error messages as a hash reference. See the documentation for "msgs" in the Data::FormValidator::Results documentation. Returning the errors with a prefix, such as "err_" is recommended. Using "any_errors" is also recommended to make it easy to display a general "we have some errors" message. HTML::Template users may want to pass "die_on_bad_params=>0" to the HTML::Template constructor to prevent the presence of the "err_" tokens from triggering an error when the errors are *not* being displayed. Data::FormVaildator profile This can either be provided as a hash reference, or as the name of a CGI::Application method that will return such a hash reference. Additionally, the value of the 'dfv_defaults' param from the calling object is optionally used to pass deftauls to the "new()" constructor. $self->param('dfv_defaults') By setting this to a hash reference of defaults in your "cgiapp_init" routine in your own super-class, you could make it easy to share some default settings for Data::FormValidator across several forms. Of course, you could also set parameter through an instance script. validate_rm Works like "check_rm" above, but returns the old style $valid hash reference instead of the results object. EXAMPLE In a CGI::Application module: # This is the run mode that will be validated. Notice that it accepts # some errors to be passed in, and on to the template system. sub form_display { my $self = shift; my $errs = shift; my $t = $self->load_tmpl('page.html'); $t->param($errs) if $errs; return $t->output; } sub form_process { my $self = shift; use CGI::Application::ValidateRM; my ($results, $err_page) = $self->check_rm('form_display','_form_profile'); return $err_page if $err_page; #.. do something with DFV $results object now my $t = $self->load_tmpl('success.html'); return $t->output; } sub _form_profile { return { required => 'email', }; } In page.html: