满足空值或其他条件时验证过滤器

时间:2014-03-20 09:01:10

标签: zend-framework2

我在Zend2上使用此输入过滤器:

    $this->get('foo')->getValidatorChain()->attach(
        new GreaterThan(array(
            'min' => 1,
            'inclusive' => true
        ))
    );

这是有效的,但我知道我还需要允许 foo var为空,所以如果为空,则验证,如果不为空,则应用 GreaterThan 条件价值。

我尝试解决此问题只是在该代码之上添加:$this->get('foo')->setAllowEmpty(true);,但无效,它会持续验证 GreaterThan 条件。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我会在帖子之后和控制器内的验证之前附加验证器。您还可以在表单类中添加一个方法,但为了演示目的,我尝试保持简短,但在表单中执行此操作可能更清晰。

...
if($request->isPost()) {
   $data = $request->getpost();
   if(!empty($data['foo'])) {
     $form->get('foo')->getValidatorChain()->attach(
        new GreaterThan(array(
        'min' => 1,
        'inclusive' => true ))
     );
   }
   if($form->isValid()) {
      //your code
   }
}
...

还可以创建自己的验证器。该文档有一些示例,并且非常清楚如何使用它们。 Documentation