GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
HTML::Shakan(3) User Contributed Perl Documentation HTML::Shakan(3)

HTML::Shakan - Form HTML generator/validator

    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) { ?><div class="error"><?= $form->error_message() ?></div><? } ?>
    <form method="post" action="add">
    <?= $form->render() ?>
    <p><input type="submit" value="add" /></p>
    </form>

HTML::Shakan is yet another form generator.

THIS IS BETA.API WILL CHANGE.

"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"
"params"
Returns form parameters. It is Hash::MultiValue object.

form generation

                     Rate         formfu         shakan shakan_declare
    formfu         1057/s             --           -77%           -84%
    shakan         4695/s           344%             --           -31%
    shakan_declare 6757/s           539%            44%             --

Shakan is XX in Japanese.

If you want to know about shakan, please see <http://ja.wikipedia.org/wiki/%E5%B7%A6%E5%AE%98>

XX should pronounce 'sakan', formally. but, edokko pronounce XX as shakan.

"my $html = $shakan->render(); :Str"
Render form.
"$shakan->render_field($name); :Str"
Render partial form named "<$name">.
"$shakan->param($key:Str); :Value[s]"
Retrive the value of the key from parameters. It's behaviour is similar to traditional request objects. (ex. CGI, Plack::Request) That is, it returns single scalar at scalar context and returns array at array context.

Tokuhiro Matsuno <tokuhirom @ gmail.com>

HTML::FormFu

ToscaWidgets

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2022-04-09 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.