rhaco1-doc :: 002-model/01-additional-validation.txt
http://wikihub.org/wiki/rhaco1-doc/002-model/01-additional-validation
Table of contents:
- rhaco
- モデル
- テンプレート
- ビュー
- プロジェクト
- セットアップ
- ユーティリティ
- データベース
- テスト
- arbo
- Tips
- ブログチュートリアル
- README
Updates:
検証処理を追加する
rhaco では,よく利用される様々な制限・検証を project.xml に記述することが実現できます.
しかし,データベースと連携した検証など,単純には行かない場面が多々あります.
こういう処理はつい View に書いてしまいそうになりますが,決して書いてはいけません.
Model で実装するための方法が用意されています.
Model に verifyHoge というように,"verify" が頭につくメソッドがあれば,検証時に自動的に呼び出されます.
<?php Rhaco::import("model.table.HogeTable"); class Hoge extends HogeTable{ /** * hoge を検証する * @param DbUtil $db * @return boolean */ function verifyHoge(&$db){ return false; } } ?>
メールアドレス確認のための再入力処理
これも,個人情報登録処理ではよくありますね!
こういう場合には,extra という仮想列を利用します.
<project> <database name="sample"> <table name="member"> <column name="id" type="serial"/> <column name="name" type="string" require="true"/> <column name="email" type="email" require="true"/> <extra name="email_confirm" type="string"/> </table> </database> </project>
で,モデルに検証のための追加メソッドを宣言します.
<?php Rhaco::import("model.table.MemberTable"); Rhaco::import("exception.ExceptionTrigger"); /** * 個人情報 */ class Member extends MemberTable{ /** * メールアドレスを確認する * @return boolean */ function verifyEmail(){ if($this->getEmail()!=$this->getEmailConfirm()){ return ExceptionTrigger::raise(new GenericException("メールアドレスを確認してください")); } return true; } } ?>
これで,メールアドレスの正当性のチェックは全て email で行い,email_confirm では,email と同じかどうかだけをチェックするだけになります.


