如何在没有表单的模型上运行ZF2验证?

时间:2016-01-22 23:39:41

标签: php validation zend-framework zend-framework2 zend-form

我正在尝试在ZF2中的类上运行验证。我已经按照Album示例了解验证器如何使用表单但是如何针对数组运行它?以下是示例中的代码。

 $form->setInputFilter($album->getInputFilter());
 $form->setData($request->getPost());
 if ($form->isValid()) {

在我的情况下,我没有表格,但有一系列数据,我想交换到班级。我该如何验证这个数组?如何运行isValid函数?我是否需要将数组绑定到新表单然后运行验证?似乎会有一种更清洁的方式。

非常感谢, M

1 个答案:

答案 0 :(得分:3)

您可以创建一个扩展到Zend\InputFilter\InputFilter

的过滤器
use Zend\InputFilter\InputFilter;
class AlbumFilter extends InputFilter {
    public function __construct() 
    {
        $this->add(array(
                'name'     => 'title',
                'required' => true,
                'validators' => array(
                    array(
                        'name' => 'NotEmpty',
                        'options' => array(
                            'messages' => array(
                                NotEmpty::IS_EMPTY => 'Title is required.',
                            ),
                        ),
                    ),
                ),
            ));
    }

}

然后在你的控制器中:

$AlbumFilter = $this->getServiceLocator()->get('AlbumFilter'); // assuming you have added AlbumFilter in your Module.php
$AlbumFilter->setData($data);
if ($AlbumFilter->isValid()) {
    // do something
}