2007/09/26
カテゴリ : Tech
JavaScript
PHP
LiveValidationPHPを使ってみた。
こんにちは、連休ですっかり休みボケの亀本です。
先日「LiveValidationPHP」というライブラリがはてブに上がっていたので、面白そうだなーと思ってちょっと試してみました。
このLiveValidationPHPは、「LiveValidation」というJavaScriptのライブバリデーションライブラリをラッピングしたPHPのバリデーションライブラリです。
これを用いると、JavaScriptを(ほぼ)全く用いずに、PHPを記述するだけでライブバリデーションとサーバサイドのバリデーションをまとめて実装することができます。
インストール方法は、ダウンロードして展開するだけです。
ダウンロードページはこちら:
http://livevalidationphp.leihitu.nl/index.php?page=downloads
JSライブラリのlivevalidation.jsと、livevalidation.jsから使用されるサンプルCSSも同梱されています。
展開したライブラリの中から
をコピーして、同階層に以下のようなサンプルスクリプトを作成します。
validationTest.php:
ここで、最初にインクルードしているrule.phpは下記に掲載したバリデーション条件を記述したファイルです。
内部で使用している$formRules変数は、このrule.phpで定義されたものです。
rule.php:
これでvalidationTest.phpにアクセスすると、以下の図のようなバリデーションが実装されます。
rule.phpで定義されているバリデーションルールは、$formRules["formTest"]内で、
・第1階層にフォーム名
・第2階層に、validになる条件とvalid時のメッセージなどの引数
・rulesが設定された場合、第3階層にバリデーションメソッドとエラーメッセージや条件など
となります。
バリデーションメソッドに指定できるのは、livevalidation.jsで用意されているバリデーションクラスと同じものですので、詳細はそちらをご覧ください。
実際に使ってみると、ほぼ何も書いていないのに、ぱぱっとライブバリデーションが実装でき、結構いい感じです。
必要なのは最初のインスタンス生成などの、ちょっとした定型処理の記述だけです。
# 言い添えておくと、このサンプルソース自体は付属のexampleと大差ありません。
# これはパクろうと思ったわけではなくて(^^;)これ以上ロジック側に実装する必要がなかった、というのが実際のところです。
JavaScriptに至っては、window.onloadしか書いていません。これも、付属サンプルのようにタグをHTMLのbody下部に記述すれば、まさにJavaScriptを一切記述する必要がありません。
また、JavaScriptがOFFの状態でも、きちんとサーバサイドでのバリデーションが実装されているのでとても便利です。
単純にサーバサイドのバリデーションライブラリとして見ても、最低限必要な機能はちゃんと実装されているように感じました。
なにより、JSとPHPで同じ条件のバリデーションを2度書かなくてよいサクサク感がうれしいですね。
arrayを書きつづるルールは見づらいですが、構造は単純なのでspyc等と組み合わせてYAMLやJSONで記述するようにしてやれば、扱いやすくなると思います。
使いやすい軽量ライブラリなので、ちょっとした時に非常に便利そうですね。
先日「LiveValidationPHP」というライブラリがはてブに上がっていたので、面白そうだなーと思ってちょっと試してみました。
このLiveValidationPHPは、「LiveValidation」というJavaScriptのライブバリデーションライブラリをラッピングしたPHPのバリデーションライブラリです。
これを用いると、JavaScriptを(ほぼ)全く用いずに、PHPを記述するだけでライブバリデーションとサーバサイドのバリデーションをまとめて実装することができます。
インストール方法は、ダウンロードして展開するだけです。
ダウンロードページはこちら:
http://livevalidationphp.leihitu.nl/index.php?page=downloads
JSライブラリのlivevalidation.jsと、livevalidation.jsから使用されるサンプルCSSも同梱されています。
展開したライブラリの中から
- livevalidationphp.class.php
- livevalidation/livevalidation.js
- livevalidation/livevalidation.css
をコピーして、同階層に以下のようなサンプルスクリプトを作成します。
validationTest.php:
- require_once
"livevalidationphp.class.php"; - require_once
"rule.php"; - $formTestLive
= new LiveValidationMassValidatePHP("formTest", $_POST); - $formTestLive->addRules($formRules["formTest"]);
- $html
= $formTestLive->generateAll(); - $formTestErrors
= array(); - if
(isset($_POST["action"]) && $_POST["action"] == "send_test_form") { $formTestErrors = $formTestLive->validate(); - }
- <!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - <html>
- <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>LiveValidationPHP サンプル</title> <link href="livevalidation/livevalidation.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="livevalidation/livevalidation.js"></script> <script type="text/javascript"><!-- - window.onload
= function() { print $html; - }
//--> </script> - </head>
- <body>
<h1>LiveValidationPHP サンプル</h1> - if
(count($formTestErrors)) { foreach ($formTestErrors as $errorMessage) { print "<p>Error=> $errorMessage </p>\n"; } - }
<form name="formTest" id="formTest" action="validationTest.php" method="post"> <p>「あいうえお」と入力してください。: <input type="text" name="aiueo" id="aiueo" value="" /></p> <p>メールアドレスを入力してください。: <input type="text" name="email" id="email" value="" /></p> <p><input type="hidden" name="action" value="send_test_form" /></p> <p><input type="submit" value=" 登録 " /></p> </form> - </body>
- </html>
ここで、最初にインクルードしているrule.phpは下記に掲載したバリデーション条件を記述したファイルです。
内部で使用している$formRules変数は、このrule.phpで定義されたものです。
rule.php:
- $formRules["formTest"]
= array( "aiueo" => array( "args" => array("validMessage" => "あいうえおって言えたね"), "rules" => array( array( "method" => "Validate.Presence", "args" => array("failureMessage" => "からっぽ") ), array( "method" => "Validate.Format", "args" => array("pattern" => "/^あいうえお$/i", "failureMessage" => "入力値が違います") ) ) ), "email" => array( "args" => array("validMessage" => "だいたい正しいEmailアドレスですね"), "display" => "Email", "rules" => array( array( "method" => "Validate.Presence", "args" => array() ), array( "method" => "Validate.Email", "args" => array() ) ) ) - )
これでvalidationTest.phpにアクセスすると、以下の図のようなバリデーションが実装されます。
rule.phpで定義されているバリデーションルールは、$formRules["formTest"]内で、
・第1階層にフォーム名
・第2階層に、validになる条件とvalid時のメッセージなどの引数
・rulesが設定された場合、第3階層にバリデーションメソッドとエラーメッセージや条件など
となります。
バリデーションメソッドに指定できるのは、livevalidation.jsで用意されているバリデーションクラスと同じものですので、詳細はそちらをご覧ください。
実際に使ってみると、ほぼ何も書いていないのに、ぱぱっとライブバリデーションが実装でき、結構いい感じです。
必要なのは最初のインスタンス生成などの、ちょっとした定型処理の記述だけです。
# 言い添えておくと、このサンプルソース自体は付属のexampleと大差ありません。
# これはパクろうと思ったわけではなくて(^^;)これ以上ロジック側に実装する必要がなかった、というのが実際のところです。
JavaScriptに至っては、window.onloadしか書いていません。これも、付属サンプルのようにタグをHTMLのbody下部に記述すれば、まさにJavaScriptを一切記述する必要がありません。
また、JavaScriptがOFFの状態でも、きちんとサーバサイドでのバリデーションが実装されているのでとても便利です。
単純にサーバサイドのバリデーションライブラリとして見ても、最低限必要な機能はちゃんと実装されているように感じました。
なにより、JSとPHPで同じ条件のバリデーションを2度書かなくてよいサクサク感がうれしいですね。
arrayを書きつづるルールは見づらいですが、構造は単純なのでspyc等と組み合わせてYAMLやJSONで記述するようにしてやれば、扱いやすくなると思います。
使いやすい軽量ライブラリなので、ちょっとした時に非常に便利そうですね。
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













コメントフォーム