[% IF msg == 'success' %]
You were successful.
[% ELSE %] [% msg IF msg %] ... show the form because something went wrong ... [% END %] ####
$self->run_modes(
'default' => 'default',\
'create_database' => 'database_action',
'add_record' => 'database_action',
'delete_records' => 'database_action',
'modify_record' => 'database_action',
'other_run_mode' => 'other_sub',
);
##
##
sub database_action
{
my $self = shift;
my $q = $self->query();
my $me = "$self->database_action()"; # Used in result messages for debugging
my @page = split('\.', $q->param('page')); # Resource requested, for example, page='section.inventory.add_record'
my $database_name = $page[$#page - 1]; # The second-last page element is the database
my $database_action = $page[$#page]; # The resource as well as the method
# Do some things here relating to the run mode
my $pkg = "My::SomePath::$database_name";
eval "require $pkg;";
if ($@) { $result = "$me: Failed to require $pkg.
\$\@ says: $@ and
\$! says: $! and
\$result: $result
"; }
my $method_call = "$pkg->${database_action}(\$self)";
$result .= eval "$method_call;";
if ($@) { $result .= "$me: $method_call failed.
\$\@ says: $@ and
\$! says: $! and
\$result is: $result
"; }
my $output .= My::CGIOut->build_page($self, $result); # Process the template
return $output;
}
##
##
sub do_some_database_action
{
my $self = shift;
my $cgi_app = shift;
my $q = $cgi_app -> query();
my $session = $cgi_app->param('session');
my $result = '';
my $me = "$self->do_some_some_database_action()"; # Used in result messages for debugging
#---------------------------------------------------------------------------
# Do Something with query parameters like Data::FormValidator
#---------------------------------------------------------------------------
my $result = My::OtherModule->validate_something($cgi_app);
return $result if ($result);
#---------------------------------------------------------------------------
# Do Something if successful
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Finish up
#---------------------------------------------------------------------------
$result = 'success' if (!$result);
return $result;
}