標準のZF2バリデータ/フィルタで入力フィルタを使用しています。しかし、私はまた、\My\InputFilter::isValid
メソッドを拡張して、特定の日付部分を比較するなど、ドメイン固有の検証を含めるようにしています。zf2 inputfilter - 失敗したカスタム検証を返す方法
この方法では、失敗した要素に対して特定のエラーメッセージを表示して、検証に失敗したことをどのように伝えますか?メソッド内からfalseを返すことはできますが、検証が失敗した理由についてはこれ以上の情報はありません。
すなわち:AbstractValidator
クラスで
public function isValid($context = null){
$latestCollectionInput = $this->get('latestCollectionTime');
$requestedCollectionTime = $this->get('requestedCollectionTime');
$date1 = \DateTime::createFromFormat('d/m/Y H:i', $latestCollectionInput->getRawValue());
$date2 = \DateTime::createFromFormat('d/m/Y H:i', $requestedCollectionTime->getRawValue());
if($date1->format('N') !== $date2->format('N')){
/* how to return failed validation for these elements */
}
return parent::isValid($context);
}
をバリデータであります完全に正しい。しかし、検証は 'InputFilter :: IsValid()'メソッドで行われるので、どのバリデーターが 'this-> error()'をセットするかは正確にはわかりません - これは(私が知っている限り)バリデータなし、またはバリデータ内の2つの値を比較する方法。だから私はどのバリデータに失敗するかを設定する方法が不明です。 –
@JohnCrest [ZF2 'Callback'バリデーター](http://framework.zend.com/manual/current/en/modules/zend.validator.callback.html)を使用して、従属フィールドを検証(比較することもできます。さらにここで[この質問stackoverflow](http://stackoverflow.com/q/17529906/1697459)を読む) – Wilt