FormValidator::Simpleでヴァリデーション

FormValidator-Simpleを使う。

設定

myapp.ymlは以下のようにする。

validator:
    plugins:
        - Japanese
    options:
        charset: euc
    messages: conf/messages.yml

messages.ymlに「名前は10字以内です」のようなメッセージを書く。

member:
   e_mail:
       DEFAULT: メールアドレスが正しくありません。
   login_id:
       DEFAULT: ログインIDが正しくありません。
       LENGTH: ログインIDは10-12文字にする必要があります。
       REGEX: ログインIDは半角英数字、ハイフン、アンダースコアで入力してください。
   password:
       DEFAULT: パスワードが正しくありません。
       LENGTH: パスワードは10-12文字にする必要があります。
       REGEX: パスワードは半角英数字、ハイフン、アンダースコアで入力してください。

アクションクラス

$c->form(
    login_id  => [qw/NOT_BLANK/, ['REGEX', qr/[\w\d-]+/], [qw/LENGTH 10 12/]],
    password  => [qw/NOT_BLANK/, ['REGEX', qr/[\w\d-]+/], [qw/LENGTH 10 12/]],
    name      => [qw/NOT_BLANK/],
    namekana  => [qw/NOT_BLANK HIRAGANA/],   
    zip       => [qw/NOT_BLANK ZIP_JP/],
    prefec    => [qw/NOT_BLANK/],
    tel       => [qw/NOT_BLANK/, ['REGEX', qr/[?d-]+/]],
    e_mail    => [qw/NOT_BLANK EMAIL_LOOSE/],
    sex       => [qw/NOT_BLANK INT/],
    birth     => [qw/NOT_BLANK/, ['DATETIME_STRPTIME','%Y-%m-%d']],
);
if ($prefec) {
    if (! grep {$prefec eq $_ } @{$c->config->{prefectures}}) {
        $c->set_invalid_form(prefec => 'PREFECTURES');
    }
}
$c->stash->{template} = 'member/regist.tt2' if $c->form->has_error;

テンプレート

[% IF Catalyst.form.has_error -%]
<h3>エラー!!</h3>
<ul>
[% FOREACH mesg IN Catalyst.form.messages('member') -%]
<li>[% mesg %]</li>
[% END -%]
</ul>
[% END -%]

ヴァリデーションプラグインの作成

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-06-11 (土) 14:47:59 (2683d)