FormValidator::Simpleにエラーメッセージ機能がついた。
FormValidator::Simpleがバージョン0.10でMESSAGE HANDLING機能が追加されたのでさっそく試してみた。
想定するフォームは、以前試した時と同じ
<form> メールアドレス:<input name="mail" type="text" id="mail" size="20" /><br /> パスワード:<input name="password" type="password" id="password" size="20" /><br /> もう一度パスワード:<input name="password_confirmation" type="password" id="password_confirmation" size="20" /><br /> パスワードは半角英数字5文字〜32文字 </form>
で行いました。
エラーメッセージの設定には、set_messagesを使う。
FormValidator::Simple->set_messages({ action1=>{ mail=>{ NOT_BLANK=>'メールアドレスを入力してください', EMAIL=>'メールアドレスが正しくありません', }, password=>{ NOT_BLANK=>'パスワードを入力してください', DEFAULT=>'パスワードは英数字5文字〜32文字で入力してください' }, password_confirmation=>{ DEFAULT=>'パスワードが一致しません' } } });
「action1」はあとでメッセージ取得用のキーとなっています。
この状態で今までと同じようにcheckをする。
my $result = FormValidator::Simple->check($q=>[ mail=>['NOT_BLANK','EMAIL'], password=>['NOT_BLANK','ASCII',['LENGTH',5,32]], {password_confirmation=>[qw/password password_confirmation/]}=>['DUPLICATION'] ]);
エラーメッセージの取得&表示は、
my $messages = $result->messages('action1');#arrayref foreach my $message ( @$messages ) { print $message, "\n"; }
とするとできる。
エラーメッセージは外部ファイルにYAML形式で設定する事もできる。shebang!のikebeさんのところで紹介されていたテクニックに近い。「action1」のところのキーを活用すれば、エラーメッセージを1つの外部ファイルにまとめられそう。メッセージのソースからの分離はおそらくハゲシク便利。
試しに、CGI::Applicationをつかった動くものをつくった。ソースはこちら。
CGI::Application::Plugin::FormValidator::Simpleの場合、set_messagesは、以下で設定できる。
$self->validator->set_messages({ action1=>{ mail=>{ ・・・・ });
追記:
本家にもエントリーがされました。今回速かったのはCPANでアップデートしたときに0.10って想定外の数字(内容にも)がでたので驚いた勢いです。
コメント
FormValidator::Simpleは便利そうですが、使うためにはDate::Calcが必要みたいですね。サーバーにDate::Calcがなく、しかもroot権限も無い場合はやっぱり使えないんですか?
投稿者: tokoroten | 2005年11月18日 10:53
sshなどでログインできる場合なら、CPANのモジュールインストール時に
perl Makefile.PL PREFIX=/home/username/
とかで自分のディレクトリにインストールできます。
あとはスクリプトで
use lib "/home/username/lib/perl5/site_perl"
とすると使えますよ。
use libのディレクトリにちょっと自信がないのでいろいろ調べてみてください。
投稿者: かぜぶろ | 2005年11月18日 12:28
インストール情報ありがとうございます!!
早速試してみます!!
投稿者: tokoroten | 2005年11月18日 12:41