NAME
HTML::Shakan - form html generator/validator
SYNOPSIS
use HTML::Shakan;
sub form {
my $req = shift;
HTML::Shakan->new(
fields => [ @_ ],
request => $req,
model => 'DataModel',
);
}
sub edit {
my $req = shift;
my $row = $model->get('user' => $req->param('id'));
my $form = form(
$req => (
TextField(name => 'name', label => 'Your name', filter => [qw/WhiteSpace/]),
EmailField(name => 'email', label => 'Your email'),
),
);
if ($req->submitted_and_valid) {
$form->model->update($row);
redirect('edit_thanks');
} else {
$form->model->fill($row);
render(form => $form);
}
}
sub add {
my $req = shift;
my $form = form(
$req => (
TextField(name => 'name', label => 'Your name'),
EmailField(name => 'email', label => 'Your email'),
)
);
if ($req->submitted_and_valid) {
$form->model->insert($model => 'user');
redirect('edit_thanks');
}
render(form => $form);
}
# in your template
if ($form->has_error) { ?>
= $form->error_message() ?>
} ?>
DESCRIPTION
HTML::Shakan is yet another form generator.
THIS IS BETA.API WILL CHANGE.
ATTRIBUTES
custom_validation
form 'login' => (
fields => [
TextField(name => 'login_id'),
PasswordField(name => 'login_pw'),
],
custom_validation => sub {
my $form = shift;
if ($form->is_valid && !MyDB->retrieve($form->param('login_id'), $form->param('login_pw'))) {
$form->set_error('login' => 'failed');
}
}
);
You can set custom validation callback, validates the field set in
the form. For example, this is useful for login form.
submitted
Returns true if the form has been submitted.
This attribute will return true if a value for any known field name
was submitted.
has_error
Return true if request has an error.
submitted_and_valid
Shorthand for "$form->submitted && !$form->has_error"
benchmarking
form generation
Rate formfu shakan shakan_declare
formfu 1057/s -- -77% -84%
shakan 4695/s 344% -- -31%
shakan_declare 6757/s 539% 44% --
What's shakan
Shakan is 左官 in Japanese.
If you want to know about shakan, please see
左官 should pronounce 'sakan', formally. but, edokko pronounce 左官
as shakan.
METHODS
my $html = $shakan->render(); :Str
Render form.
$shakan->render_field($name); :Str
Render partial form named "<$name">.
AUTHOR
Tokuhiro Matsuno
SEE ALSO
HTML::FormFu
ToscaWidgets
LICENSE
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.