Michael Peters
Thu, 02 Dec 2004 07:11:56 -0800
Hi,
I am building a web-based system and am trying to use CGI::Application and HTML::Template to achieve both a modular structure and design/code separation.
My design goal can be summarized as:
-- Base.pl is instance script for base module Base.pm
-- Base.pm throws a HTML page with a link which links to another instance script data_entry_index.pl
-- data_entry_index.pl is instance script for data_entry.pm
module which I want to be the child of Base.pm and be able to have access to it's app instance but is not!
I think you might be confusing what param() does... I'll elaborate below...
Base.pm module ----------------------------------------------------------- #!/usr/local/bin/perl
package BASE; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use DBI; use HTML::Template; use CGI::Session qw/-ip-match/; use base 'CGI::Application';
sub setup {
my $self = shift; $self->start_mode('display_entry_screen'); $self->run_modes( 'display_entry_screen' => 'display_entry_screen', );
}
sub display_entry_screen {
my $self = shift; # I am purposely setting this parameter to test if it # is accessible in the child module $self->param('here' => 'here');
-----------------------------------------------------------
and am calling the above module using the following instance script
Base.pl ------------------------------------------------------------ #!/usr/local/bin/perl
use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution';
use base 'BASE';
use strict;
my $webapp = BASE->new(TMPL_PATH => '/export/home/r/rangask/software/html/'
);
$webapp->run();
------------------------------------------------------------
Now Base.pm results in a screen with a single link from where I call
another instance script. That instance script calls a module which
needs to use Base.pm
as it's 'parent'. But I find thats not happening. The code is pasted
below
data_entry_index.pl ------------------------------------------------------------ #!/usr/local/bin/perl
use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution/data_entry';
use data_entry; use strict;
use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution'; use base 'BASE';
same thing... you don't need a 'use base' inside of a script.
my $webapp = data_entry->new( TMPL_PATH => '/export/home/r/rangask/software/html/' ); $webapp->run(); ------------------------------------------------------------
data_entry.pm ------------------------------------------------------------ #!/usr/local/bin/perl
package data_entry; use CGI::Application; use CGI::Session; use CGI::Application::ValidateRM; use Data::FormValidator; use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use HTML::Template; use lib '/export/home/r/rangask/software/cgi-bin/SoftwareDistribution'; use base 'BASE';
sub setup {
my $self = shift;
$self->start_mode('data_entry_user_details');
$self->run_modes(
'data_entry_user_details' => 'data_entry_user_details',
);
}
sub data_entry_user_details {
my $self = shift;
# This should have given me a 1 because of the 'here' param I set in Base.pm but it gives a '0'!! return $self->param();
--------------------------------------------------------------------- Web Archive: http://www.mail-archive.com/cgiapp@lists.erlbaum.net/ http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2 To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]