如何在Zend框架2中使用没有表单类的InputFilter

yur*_*snk 8 validation zend-framework2 zend-inputfilter

我的模型对象实现了InputFilterAwareInterface并且有getInputFilter()方法,它返回了Zend\InputFilter\InputFilter实例

在我的情况下我不需要表单,我只需要从数组中验证元素.如何使用Zend\InputFilter\InputFilter来验证数组中的数据而不创建表单类?

Den*_*bov 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();
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

  • @yurisnk你可以在调用`setValidationGroup()`时设置要验证的字段列表,只使用` - > setValidationGroup('field_name')`表示单字段或` - > setValidationGroup(array('field_name1','field_name2') )`上面例子中的字段集. (3认同)