HTML::Shakanの使い方とか

#!perl
use strict;
use warnings;

package My::Form;
use HTML::Shakan::Declare;

form 'add' => ( 
	TextField(
		name => 'name',
                label => 'name',
		constraints => [
			[ 'REGEXP' => qr/^[\w]+$/ ],
		],
	),
);

package main;
use CGI;
use Text::Xslate qw/mark_raw/;
use Data::Section::Simple;
my $vpath = Data::Section::Simple->new()->get_data_section();
my $tx    = Text::Xslate->new( path => [$vpath] );
my $q     = CGI->new;$q->param(name => 'hogehoge');
my $form  = My::Form->get(
	'add' => (
		request => $q,
	)
);
my $html;
if ($form->submitted_and_valid) {

	$html = $form->render();
}
else {
	$html = 'not valid';
}
my %var  = ( html => mark_raw($html) );

print $tx->render('index.xt', \%var);
__DATA__
@@ index.xt
<: $html :>

基本は以上。これでformのvalueとかは勝手に埋まってくれる。

Fieldのオプションは

$ perldoc HTML::Shakan::Field

使えるfieldの種類は

$ perldoc HTML::Shakan::Fields

constraintsについては

$ perldoc FormValidator::Lite::Constraint::Default
$ perldoc FormValidator::Lite::Constraint::Email
$ perldoc FormValidator::Lite::Constraint::URL
$ perldoc FormValidator::Lite::Constraint::Date
$ perldoc FormValidator::Lite::Constraint::File

あたりを参照するとだいたいわかる