2016-01-22 39 views
3

我想在ZF2的一个类上运行验证。我遵循相册示例,了解验证器如何与表单一起工作,但是如何对数组运行它?以下是该示例的代码。如何在没有表单的模型上运行ZF2验证?

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

在我的情况下,我没有一个表单,但有一个数据我想交换到类的数组。我怎样才能验证这个数组?我如何运行isValid函数?我是否需要将数组绑定到一个新窗体,然后运行验证?似乎会有更清晰的方式。

非常感谢, 中号

+0

看便知HTTP: //stackoverflow.com/a/24575074/949273 – tasmaniski

+0

@tasmani sk这个作品!非常感谢。我可以要求跟进,但我如何才能显示信息?有没有办法填充帮助类(就像它在相册示例中那样)?他们使用,如果它是有效的,否则什么都不做(重新加载带有消息的页面)。非常感谢。 – Matt

回答

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 
} 
相关问题