Piece_Right は Piece Framework のバリデーションの部分を担当しているライブラリです。 この Piece_Right を Zend Framework に組み込み、 以下のような YAML 形式の設定ファイルに基づいて、 バリデーションを一括して行えるようにします。
- name: userid description: ユーザーID required: message: %_description%を入力して下さい。 validator: - name: Length rule: min: 4 max: 8 message: %_description%は4文字以上8文字以下です。 - name: password description: パスワード ……
Zend_Validate_Interface の API に合わせてありますが、 入力値をフィルタする機能も備えているため、 機能的には Zend_Filter_Input クラスに近いです。
アーカイブをダウンロードし、
include_path の通ったディレクトリで展開して下さい。
(sample/library のような各アプリケーションの library ディレクトリや、
ZendFramework-1.5.3/library ディレクトリなどで。)
$ cd ZendFramework-1.5.3/library $ tar xvfz Revulo_Validate_Right-0.9.tar.gz
また、その他にいくつかのライブラリをインストールする必要があります。
これらのうち Spyc 以外のライブラリは、 以下のように pear コマンドを使うことでまとめてインストールできます。
# pear channel-discover pear.piece-framework.com # pear install piece/Piece_Right
後は Spyc のページ からアーカイブをダウンロードしてインストールして下さい。
まず、Revulo_Validate_Right クラスのオブジェクトを作成し、 どのバリデーションのルールを用いるかを setValidationSetName() メソッドで指定します。
$validator = new Revulo_Validate_Right(); $validator->setValidationSetName('Login');
そうしたら、isValid() メソッドを呼んで下さい。 入力値に対するフィルタ処理とバリデーションがまとめて行われ、 全てのバリデーションに成功した場合には true が返ってきます。
if ($validator->isValid($_POST) === true) { ...... }
必要であれば、フィルタされた値やエラーメッセージを取得し、 ビュースクリプトに渡すこともできます。
$values = $validator->getValues(); $errors = $validator->getMessages(); $this->view->assign($values); $this->view->errors = $errors;
基本的な使い方はほぼこれだけです。 より具体的な使い方については、付属のサンプルのコードを見て下さい。
設定可能なオプションは以下の通りです。
設定する場合は、 setConfigDirectory() などの各オプション専用のメソッドを用いるか、 連想配列の形でコンストラクタにパラメータを渡して下さい。
configDirectory, cacheDirectory には、 モジュールのディレクトリからの相対パスを指定します。
validatorDirectories, filterDirectories には、 バリデータやフィルタが置かれているディレクトリそのものではなく、 基点となるディレクトリを指定します。 例えば、Zend_Filter_xxx クラスはフィルタとして流用することができますが、 その場合は Zend/Filter/xxx.php を探しにいって欲しいので、
$validator->addFilterDirectories('/path/to/ZendFramework/library') ->addFilterPrefixes('Zend_Filter');
のように指定することになります。
バリデーション定義ファイルの書き方については、 Piece_Right ユーザーズマニュアル を参照して下さい。
動作確認用に簡単なサンプルを用意しました。 アーカイブをダウンロードし、 適当なディレクトリで p オプションを付けて展開して下さい。
$ cd sample $ tar xvfzp Revulo_Sample_Authentication-0.8.tar.gz
あとは http://…/sample/html/ のような URL にアクセスすれば試すことができます。