表紙 > Ethna > フォーム値の自動検証を行う(プラグイン編)

フォーム値の自動検証を行う(プラグイン編)

3 月 27
Ethna aa

フォーム値の自動検証を行う(プラグイン編)
で、実際に自分でコード噛み砕きながらバリデートを造れるようにのメモ


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!!

コメント:2

ヤスヲ 08-03-27 (木) 15:47

で、この「mail」という名前で括るのは面倒だなぁ。
いま電話番号の入力規則も追加しようとしたら、新しいファイルを作って・・・てことになるよね。

なんだったら「アドレス」シリーズで
'addr' => true,
'addr_type' => 'tel'
とかでやったほうがいい気がした。

よし、いこうw


ヤスヲ 08-03-27 (木) 16:17

ちなみに
_typeと、アンダーバーをつけることで
$params = array([‘addr’] => true,[‘type’] => 'tel',);
となる。


返信は無いかもしれないですが初めてのコメントどうですか?
名前とかを保存しちゃう?

トラックバック:0

トラックバックです。バンバンしてあげてください。
http://www.ezo-style.com/2008/03/27/%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e5%80%a4%e3%81%ae%e8%87%aa%e5%8b%95%e6%a4%9c%e8%a8%bc%e3%82%92%e8%a1%8c%e3%81%86%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e7%b7%a8/trackback/
Listed below are links to weblogs that reference
フォーム値の自動検証を行う(プラグイン編) from エゾスタイル

表紙 > Ethna > フォーム値の自動検証を行う(プラグイン編)