2012-11-18 87 views
8

我的模型對象實現InputFilterAwareInterface並有getInputFilter()方法,該方法返回的Zend \輸入過濾器\輸入過濾實例如何在Zend框架使用輸入過濾不形類2

我不需要形式,我的情況,我只是需要驗證數組中的元素。我如何使用Zend \ InputFilter \ InputFilter來驗證數組中的數據而不創建表單類?

回答

17

希望的代碼是不言自明(setData設置你的陣列,setValidationGroup檢查所有元素,並isValid得到驗證的結果):

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

您能否提供一種方法來從驗證只有一行組? – yurisnk

+3

@yurisnk您可以在調用setValidationGroup()時設置要驗證的字段列表,只需使用 - > setValidationGroup('field_name')'爲單個字段或' - > setValidationGroup(array('field_name1','field_name2' ))'上面例子中的字段集合。 –