CGI::FormBuilder::Source::YAML - Initialize FormBuilder from YAML file
use CGI::FormBuilder; my $form = CGI::FormBuilder->new( source => { source => 'form.fb', type => 'YAML', }, ); my $lname = $form->field('lname'); # like normal
This reads a YAML (YAML::Syck) file that contains FormBuilder config options and returns a hash to be fed to CGI::FormBuilder->new().
Instead of the syntax read by CGI::FormBuilder::Source::File, it uses pure YAML syntax as read by YAML::Syck. That means you fully specify the entire data structure -- the module doesn't do any fancy processing.
LoadCode is enabled, so you can use YAML syntax for defining subroutines. This is convenient if you have a function that generates validation subrefs, for example, I have one that can check profanity using Regexp::Common.
validate: myfield: javascript: /^[\s\S]{2,50}$/ perl: !!perl/code: >- { My::Funk::fb_perl_validate({ min => 2, max => 50, profanity => 'check' })->(shift); }
Well there is one exception to the "pure YAML syntax", you can specify references as string values that start with \&, \$, \@, or \% in the same way you can with CGI::FormBuilder::Source::File. If you have a full direct package reference, it will look there, otherwise it will traverse up the caller stack and take the first it finds.
method: GET header: 0 title: test name: test action: /test submit: test it linebreaks: 1 required: - test1 - test2 fields: - test1 - test2 - test3 - test4 fieldopts: test1: type: text size: 10 maxlength: 32 test2: type: text size: 10 maxlength: 32 test3: type: radio options: - - 1 - Yes - - 0 - No test4: options: \&test4opts sort: \&Someother::Package::sortopts validate: test1: /^\w{3,10}$/ test2: javascript: EMAIL perl: eq 'test@test.foo' test3: - 0 - 1 test4: \&test4opts
You get the idea. A bit more whitespace, but it works in a standardized way.
Normally not used directly; it is called from CGI::FormBuilder. Creates the CGI::FormBuilder::Source::YAML object. Arguments from the 'source' hash passed to CGI::FormBuilder->new() will become defaults, unless specified in the file.
CGI::FormBuilder::Source::YAML
Normally not used directly; it is called from CGI::FormBuilder. Parses the specified source file. No fancy params -- just a single filename is accepted. If the file isn't acceptable to YAML::Syck, I suppose it will die.
CGI::FormBuilder, CGI::FormBuilder::Source
$Id: YAML.pm 3 2006-11-02 17:00:00Z markle $
Copyright (c) 2006 Mark Hedges <hedges@ucsd.edu>. All rights reserved.
This module is free software; you may copy it under terms of the Perl license (GNU General Public License or Artistic License.) http://www.opensource.org/licenses/index.html
To install CGI::FormBuilder::Source::YAML, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::FormBuilder::Source::YAML
CPAN shell
perl -MCPAN -e shell install CGI::FormBuilder::Source::YAML
For more information on module installation, please visit the detailed CPAN module installation guide.