如何在Zend框架2中不使用表单类使用InputFilter

8

我的模型对象实现了InputFilterAwareInterface接口,并具有getInputFilter()方法,该方法返回Zend\InputFilter\InputFilter实例。

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

1个回答

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();
    /* ... */
}

你能提供一种验证集合中仅一个行的方法吗? - Yuri Taratorkin
3
您可以在调用setValidationGroup()时设置要验证的字段列表,只需使用->setValidationGroup('field_name')来验证单个字段,或者使用->setValidationGroup(array('field_name1', 'field_name2'))来验证一组字段。以上示例中。 - Denis Ryabov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接