Ich benutze einen Eingangsfilter mit Standard ZF2 Validatoren/Filter. Allerdings erweitere ich auch die Methode \My\InputFilter::isValid
um eine domänenspezifische Validierung, z. B. zum Vergleichen bestimmter Teile von Daten.zf2 inputfilter - wie man eine fehlerhafte benutzerdefinierte Validierung zurückgibt
Wie signalisiere ich innerhalb dieser Methode, dass die Validierung fehlgeschlagen ist, mit einer spezifischen Fehlermeldung für die fehlerhaften Elemente? Ich kann in der Methode false zurückgeben, aber das liefert keine weiteren Informationen darüber, warum die Validierung fehlgeschlagen ist.
dh:
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);
}
Was Sie sagen, ist völlig korrekt. Allerdings bin ich mir nicht sicher, welcher Validator 'this-> error() 'aktiviert hat, da die Validierung in der' InputFilter :: IsValid() 'Methode erfolgt - dies liegt daran, dass (soweit ich weiß) dies der Fall ist keine Validatoren oder Möglichkeiten, zwei Werte in einem Validator zu vergleichen. Ich bin mir also nicht sicher, wie oder welcher Validator als fehlgeschlagen gesetzt werden soll. –
@JohnCrest Sie können abhängige Felder validieren (also auch vergleichen) mit [einem ZF2-Callback-Validierer] (http://framework.zend.com/manual/current/de/modules/zend.validator.callback.html) (Lesen Sie hier auch mehr [in dieser Frage zu stackoverflow] (http://stackoverflow.com/q/17529906/1697459)) – Wilt