# CGI::Application code...
# The main runmode, where I show the page
#
sub foo
{
my $self = shift;
my $s = $self->session();
my $tmpl = $self->load_tmpl('foo');
# ... load data in the template, as long
# as the missing and invalid fields, that
# come from the session (see foo_update()).
foo_view( $tmpl, $data, $s->param('missing'), $s->param('invalid'));
return $tmpl->output();
}
sub foo_update
{
my $self = shift;
my $q = $self->query();
my $s = $self->session();
my %form = $q->Vars();
my $results = Data::FormValidator->check( \%form, $profile );
if ($results->has_invalid() or $results->has_missing()) {
$s->param( missing => [ $results->missing() ] ,
invalid => [ $results->invalid() ] );
$self->redirect( { rm => 'foo' } );
}
else {
# Data are good, we proceed...
$self->redirect( { rm => 'bar' } );
}
}
####
# This is called by foo() from the main application, just before
# to display the page
#
sub foo_view
{
my $template = shift;
my $date = shift;
my $missing = shift;
my $invalid = shift;
$template->param( "missing_$_" => 1 ) for @$missing;
$template->param( "invalid_$_" => 1 ) for @$invalid;
# [...]
return $template;
}
##
##
Bad boy! This is an error message.