第3回 Catalyst::Plugin::FormValidator::Lazy method Validation勉強

フィールド名とマッピングした検証関数の使用方法を勉強します。

目的

この機能は当初正規表現だけの実装だったのを、関数も使えるようにしようと実装しました。

設定

マッピングさせる為には、設定時に値を method にします。この例では、emailをマッピングしています。
また、マッピングさせる関数名のプレフィックスに、strict_ をつけます。以下のような感じです。

neko_web.yml

    strict :
        email     : method

Neko::Validator

sub strict_email {
    my ( $email ) = @_;
    return Email::Valid::Loose->address( $email );
}

これで、認証時に email は strict_emailでチェックされるようになりました。

簡単ですね。

+α dfvエラーを少し簡単に。

設定ファイルに、フィールド表示名を設定します。プロジェクトによっては、Catalyst::Plugin::I18Nを使用しても良いと思います。

neko_web.yml

label :
    email : メールアドレス
    post_code : 郵便番号
custom_invalid:

ループをまわして表示 :-)

root/common/dfv.tt

[% IF c.has_dfv_error %]
<div>
[% FOREACH item IN missing %]
   <li>[% c.config.label.${ item.key } %]を入力して下さい。</li>
[% END %]
[% FOREACH item IN invalid %]
    <li>[% c.config.label.${ item.key } %]の入力フォーマットが不正です。</li>
[% END %]
[% FOREACH item IN custom_invalid %]
    <li>[% c.config.custom_invalid.${ item.key } %]</li>
[% END %]
</div>
[% END %]

root/email01.tt

[% INCLUDE common:dfv.tt %]

こんな感じで楽になりますね。