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