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 has_error) { ?>
error_message() ?>
render() ?>

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.