--- _brian_d_foy <[EMAIL PROTECTED]> wrote:
> In article
>
<[EMAIL PROTECTED]>,
> Benjamin Schmaus <[EMAIL PROTECTED]> wrote:
>
> > > > modid: WWW::Form
> > WWW::Form is not particularly similar to
> HTML::Form.
> > HTML::Form parses HTML to build Perl
> representations
> > of HTML form data.
>
> that sounds like CGI.pm or URI. perhaps you can
> show a code
> example?
Sure. I'm assuming that you want to see a code sample
of WWW::Form and WWW::FieldValidator in use. If you
want to see something else let me know. I hope that
it's OK to send you the sample as an attachment.
Thanks for your input.
> > > > DSLIP: RdpOp
> > > > description: Simple API for web form
> programming
> > >
> > > this sounds like HTML::Form.
> >
> > WWW::Form is not particularly similar to
> HTML::Form.
> > HTML::Form parses HTML to build Perl
> representations
> > of HTML form data.
>
> that sounds like CGI.pm or URI. perhaps you can
> show a code
> example?
>
> --
> brian d foy (one of many PAUSE admins),
> http://pause.perl.org
> please send all messages back to [EMAIL PROTECTED]
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use Data::Dumper;
# both of these need to be installed to run this
# test program
use WWW::Form;
use WWW::FieldValidator;
# gets us access to the HTTP request data
my $q = CGI->new();
# hash ref of HTTP vars
my $params = $q->Vars();
# this gets us our Form object
my $form = getForm();
# display the HTML form test page
printHTMLPage();
#-----------------------------------#
# Start subroutines needed to build
# Form test page
#-----------------------------------#
sub printHTMLPage {
print <<HTML;
Content-Type: text/html
<html>
<head>
<title>Form Test Page</title>
</head>
<body>
HTML
print "HTTP POST Variables\n<pre>" . Data::Dumper::Dumper($params) . "</pre>";
# uncomment the following Data::Dummper line if you
# want to look at the internal structure of the Form module
#print "Form object\n<pre>" . Data::Dumper::Dumper($form) . "</pre>";
print "\n<h2>" . getFormStatusMessage() . "</h2>\n";
print "<form action='./form_test.pl' method='post'>\n";
print "<table border='0' cellspacing='2' cellpadding='5'>\n";
print $form->get_field_HTML_row('name');
print $form->get_field_HTML_row('emailAddress');
print $form->get_field_HTML_row('password', ' size="6" ');
print $form->get_field_HTML_row('passwordConfirm', ' size="6" ');
print $form->get_field_HTML_row('comments', " rows='5' cols='40' ");
print $form->get_field_HTML_row('favoriteColor');
print $form->get_field_HTML_row('elvisOrBeatles');
print $form->get_field_HTML_row('spam');
print $form->get_field_HTML_row('aHiddenInput');
print "</table>\n\n";
print <<HTML;
<input type="submit" value="Submit" />
</form>
</body>
</html>
HTML
}
# uses the isSubmitted, validateFields, and isValid methods
# of WWW::Form object
sub getFormStatusMessage() {
# init status message to display
# in the form test web page
my $formStatusMessage = 'Form has not been submitted';
# check to see that the form was submitted
if ($form->isSubmitted($ENV{REQUEST_METHOD})) {
# the form was POSTed so
# validate the user entered input
$form->validateFields($params);
# update our status message depending on
# whether or not the form data was good
# if the form data is good then do some stuff
if ($form->isValid()) {
$formStatusMessage = 'Form was submitted and the data is good';
} else {
$formStatusMessage = 'Form was submitted and the data is bad';
}
}
return $formStatusMessage;
}
# creates and return a WWW::Form object
sub getForm {
# if there are HTTP params then use those
# values to instantiate our Form object with
if ($params) {
return WWW::Form->new(getFormFields(), $params);
} else {
return WWW::Form->new(getFormFields());
}
}
# returns data structure suitable for passing
# to Form object constructor
# this example covers how to handle all of the various
# types of form inputs with WWW::Form
sub getFormFields {
my %fields = (
emailAddress => {
label => 'Email address',
defaultValue => '',
type => 'text',
validators => [WWW::FieldValidator->new(
WWW::FieldValidator::WELL_FORMED_EMAIL,
'Make sure email address is well formed')]
},
name => {
label => 'Full name',
defaultValue => '',
type => 'text',
validators => [WWW::FieldValidator->new(
WWW::FieldValidator::MIN_STR_LENGTH,
'Please enter your name (at least 3 characters)', 3)]
},
aHiddenInput => {
label => '',
defaultValue => 'Hey, I am a hidden form input, nice to meet you!',
type => 'hidden',
validators => []
},
password => {
label => 'Password',
defaultValue => '',
type => 'password',
validators => [WWW::FieldValidator->new(
WWW::FieldValidator::MIN_STR_LENGTH,
'Password must be at least 6 characters', 6)]
},
passwordConfirm => {
label => 'Confirm password',
defaultValue => '',
type => 'password',
validators => [WWW::FieldValidator->new(
WWW::FieldValidator::MIN_STR_LENGTH,
'Password confirm must be at least 6 characters', 6),
WWW::FieldValidator->new(
WWW::FieldValidator::REGEX_MATCH,
'Passwords must match', '^' . $params->{password} .
'$')]
},
spam => {
label => 'Do we have your permission to send you spam?',
defaultValue => 'Yes, spam me.',
defaultChecked => 0, # set to 1 to check by default
type => 'checkbox',
validators => []
},
comments => {
label => 'Comments',
defaultValue => '',
type => 'textarea',
validators => [WWW::FieldValidator->new(
WWW::FieldValidator::MIN_STR_LENGTH,
"If you're going to say something, how about at least
10 characters?",
10,
my $isOptional = 1)]
},
favoriteColor => {
label => 'Favorite color',
defaultValue => '', # set to 'green', 'red', or 'blue' to set default
option group
type => 'select',
optionsGroup => [{label => 'Green', value => 'green'},
{label => 'Red', value => 'red'},
{label => 'Blue', value => 'blue'}],
validators => []
},
elvisOrBeatles => {
label => 'Do you like Elvis or the Beatles',
defaultValue => 'I am a Beatles dude(tte)', # uncomment to leave group
unchecked by default
type => 'radio',
optionsGroup => [{label => 'I like Elvis', value => "I am an Elvis
dude(tte)"},
{label => 'I like the Beatles', value => "I am a Beatles
dude(tte)"}],
validators => []
}
);
return \%fields;
}