LiveValidationPHPを使ってみた。
- 2007/09/26
亀本大地
こんにちは、連休ですっかり休みボケの亀本です。
先日「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() { $html;- }
//--> </script> - </head>
- <body>
<h1>LiveValidationPHP サンプル</h1> - if
(count($formTestErrors)) { foreach ($formTestErrors as $errorMessage) { "<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で記述するようにしてやれば、扱いやすくなると思います。
使いやすい軽量ライブラリなので、ちょっとした時に非常に便利そうですね。
コメントフォーム
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



最近のコメント