これまでのやり方は、フォームオブジェクト、フォームフィールドオブジェクト、およびフォームフィールドバリデーターオブジェクトです。
ですから、すべてのフィールドオブジェクトを作成し、必要であれば、それらにバリデータを添付して、その後、フォームに全体の多くを添付したい - あなたは一種のようなもので終わる:
$oFieldUsername = new FormField('username', new Validator(Validator::TYPE_EMAIL));
$oFieldPassword = new FormField('password', new Validator(Validator::TYPE_PASSWORD));
$oForm = new Form(Form::METHOD_POST, '/path/to/action.php');
$oForm->attachField($oFieldUsername);
$oForm->attachField($oFieldPassword);
//form has not been posted
if(!$oForm->isReceived()) {
$oForm->render('/path/to/view.tpl.php');
}
//the form HAS been posted but IS NOT VALID
elseif(!$oForm->isValid()) {
$oForm->render('/path/to/view.tpl.php');
}
//the form HAS been posted and the data LOOKS valid
else {
//do processing and hand-off
}
バリデーターは、フィールド・データが必要かどうかを判断する、データが空のストリング(RegExp)と一致するかどうかを判別するなどの処理を行います。
しかし、彼らはまた、電子メールの検証(getmxrrの有無にかかわらず()参照)、または何か他のものを扱うことができ、あなただけ...特定のケースのためのバリデータタイプを構築したり、一般的なバリデータを持っている:
new Validator(Validator::TYPE_EMAIL); //basic email validator
new Validator(Validator::TYPE_EMAIL_WITH_MX); //email validator with getmxrr()
new Validator(Validator::TYPE_REGEXP, '/^[\w]+$/'); //generic regular expression with the pattern to match as the second parameter
new Validator(Validator::TYPE_INT_MIN, 10); //integer with a minimum value of 10
new Validator(Validator::TYPE_REGEXP, '/^[\w\s]*$/', true); //the third parameter could be an override so that the validation is optional - if the field has a value it MUST validate, if it doesn't have a value, it's fine
この検証に必要なだけの柔軟性を提供します。 Form::isValid()
メソッドはすべて、添付されたすべてのフィールドをループし、バリデータがあるかどうかを確認し、そうであればValidator::isValid()
メソッドがtrueを返すかどうかをチェックします。それは、私はとにかくそれをやった方法です...
//the field value must be an integer between 5 and 10 (inclusive)
$oField->addValidator(new Validator(Validator::TYPE_INT_MIN, 5));
$oField->addValidator(new Validator(Validator::TYPE_INT_MAX, 10));
:
また、のようなものでフィールドに複数のバリデータを添付することができます。
あなたが知るためにform_validationライブラリをチェックすることができます、CIがそれを行う方法 –
Codeigniterはこれを行うためのコードを持っていますが、私はあなたが "PHPネイティブ"で見つけることを期待しています。 PHPにはフォームがありません(HTMLフォームを生成するPHPファイルを作成できますが、フォームafaikを表すネイティブオブジェクトはありません)。 – Nanne
Quickform2 - IMHOは、PHPフォームに最適なアプローチの1つです。 http://pear.php.net/package/HTML_QuickForm2 – ExternalUse