2012-11-18 8 views
8

Mein Modell-Objekt implementiert InputFilterAwareInterface und getInputFilter() -Methode, dieWie Eingangsfilter ohne Formularklasse in Zend Framework verwenden 2

Ich brauche keine Form in meinem Fall, ich Zend \ Eingangsfilter \ Instanz gerade Eingangsfilter müssen Elemente aus Array validieren. Wie kann ich Zend \ InputFilter \ InputFilter verwenden, um Daten aus einem Array zu validieren, ohne eine Formularklasse zu erstellen?

Antwort

17

Hoffen, dass der Code selbsterklärend (setData Ihr Array zu setzen, setValidationGroup alle Elemente zu überprüfen und isValid Ergebnis der Validierung erhalten):

use \Zend\InputFilter\InputFilterInterface; 

/* ... */ 

/** @var $data array */ 

/** @var $filter InputFilterInterface */ 
$filter = $this->getInputFilter(); 

$isValid = $filter->setData($data) 
        ->setValidationGroup(InputFilterInterface::VALIDATE_ALL) 
        ->isValid(); 

if (!$isValid) 
{ 
    $errorMessages = $filter->getMessages(); 
    /* ... */ 
} 
+0

Können Sie einen Ansatz vorschlagen, nur eine Zeile zur Validierung von einstellen? – yurisnk

+3

@yurynnk Sie können eine Liste von Feldern festlegen, die beim Aufruf von 'setValidationGroup()' überprüft werden sollen, verwenden Sie einfach '-> setValidationGroup ('field_name')' für einzelnes Feld oder '-> setValidationGroup (Array ('field_name1', 'field_name2'))) 'für eine Menge von Feldern im obigen Beispiel. –