開始日時と終了日時の間で、「開始日時が終了日時より後であればエラー」というようなバリデータを作りたい場合は次のようにします。
$this->validatorSchema->setPostValidator( new sfValidatorSchemaCompare('start_date', sfValidatorSchemaCompare::LESS_THAN_EQUAL, 'end_date', array('throw_global_error' => true), array('invalid' => '開始日時は終了日時より前に設定してください') ) );
sfValidatorSchemaCompareの説明を少しします。形式としては、
$this->validatorSchema->setPostValidator($leftField, $operator, $rightField, $options, $messages);
というものです。
引数は
- $leftField:比べたいフィールド名(左)
- $operator:オペレータ
- $rightField:比べたいフィールド名(右)
- $options:オプション設定
- $message:メッセージ設定
となっています。
$operatorには以下のようなものが使えます。
- sfValidatorSchemaCompare::EQUAL
- sfValidatorSchemaCompare::NOT_EQUAL
- sfValidatorSchemaCompare::IDENTICAL
- sfValidatorSchemaCompare::NOT_IDENTICAL
- sfValidatorSchemaCompare::LESS_THAN
- sfValidatorSchemaCompare::LESS_THAN_EQUAL
- sfValidatorSchemaCompare::GREATER_THAN
- sfValidatorSchemaCompare::GREATER_THAN_EQUAL
オプション設定部のthrow_global_optionオプションは、グローバルエラーとして投げるかどうか、決めることができます。
メッセージ設定部のinvalidオプションはバリデートに引っかかった場合のエラーメッセージを設定できます。
これらをつかえば、簡単なフィールド間のバリデートを作ることができますね!