フォーム値の自動検証を行う(プラグイン編)
フォーム値の自動検証を行う(プラグイン編)
で、実際に自分でコード噛み砕きながらバリデートを造れるようにのメモ
![]()
Ethna×PHP(ピーエッチピー)
やりたいことは電子メールアドレスのValidate
ActionFormでの設定
Ethnaには「あらかじめ」電子メールの入力規則は簡単に出来るようになっているのでプラグインは作る必要が全く無いのですが、「同じ機能」をプラグインでやってみようということです。
普通のEthna(普通じゃないEthnaって?w)なら’custom’ => ‘checkMailaddress’,とつけるだけでOKです。
http://ethna.jp/ethna-document-dev_guide-form-customvalidate.html
* checkVendorChar: 機種依存文字
* checkBoolean: bool値
* checkMailaddress: メールアドレス
* checkURL: URL
これだけ用意されています。
そこらへんのソースはEthna/class/Ethna_Util.phpにあります。きっとここにイロイロ追加しても良いのでしょうが、Ethna本体をいぢくるのは好きじゃありません。(と、いいつつUTF-8化はしている)
んじゃ、プラグイン化。
今回は ‘mail’ => true, とやるとメールの入力規則をチェックするものです。「mail」は「hoge」でも「hoo」でもかまいません。
ただし、作るファイル名とクラス名に関連してきます。
app/plugin/validator/[アプリ名]_Plugin_Validator_Mail.php
MailのMは「大文字」です。名前の規則です。
では中身を
クラス名はファイル名とおなじっス。
Ethnaではこれからが使えるということ。
http://ethna.jp/ethna-document-dev_guide-form-validate_with_plugin.html
* $name: フォームの名前
* $var: 入力されたフォームの値
* $params: フォーム定義のパラメータ(連想配列)
親クラス(Ethna_Plugin_Validator)で定義された便利なメソッドなどについて簡単に説明します。
* $this->backend
o Ethna_Backendオブジェクト
* $this->accept_array (boolean)
o この値が true のとき,Ethna_ActionFormのバリデート処理は,配列で指定されたフォームを(各配列要素でなく)配列のままプラグインに渡します。
* $this->getFormType($name)
o フォームの ‘type’ 要素(VAR_TYPE_INTなど)を取得します。配列指定の場合は値のみを取得します。
* $this->isEmpty($var, $type)
o VAR_TYPE_* に応じて,フォームの値が空と見なせるかどうかを判定します。
エラーオブジェクトには、Notice,Warning,Errorの3つがあります。エラーの内容に応じて,これらを使い分けます.
アプリケーション固有のエラーメッセージを渡したい場合は、EthnaクラスのraiseNotice,raiseWarning,raiseErrorメソッドを使って,Ethna_Errorオブジェクトを生成します.
この例では,raiseNoticeを用いてエラーオブジェクトを返しています.引数には,メッセージとエラーコードを与えます.
Errorとかに変えたら
Shop[432](ERR): hoge_Plugin_Validator_Mail.validate(\class\Ethna_ActionForm.php:630): {form}を正しく入力してください。 [ERROR CODE(143)]
とかでてきたYo!!