ZF2输入验证器仅在非空时才需要为空

时间:2015-07-18 18:48:18

标签: zend-framework2

我正在使用输入过滤器构建一个表单,所有这些都在Zend Framework 2中。我正在使用数组来配置我的输入,过滤器和验证器。所以,说我有一些意见:

array(
    'name' => 'foo',
    'required' => true,
)

在页面上,有一些jQuery代码可能会隐藏此输入。如果是,它会隐藏和禁用输入。在提交时,表单数据上的var_dump给出foo => null(可能是因为它实际上没有在post数据中提交,因此表单输入永远不会给出值)。如果输入未隐藏且未填写,则在提交时会有foo => string '' (length=0)

如果使用输入,我想要输入有一个值。那么,我可以添加一些设置,我的配置数组将允许null传递验证,但拒绝空字符串值?或者我是否需要编写自定义验证器?

1 个答案:

答案 0 :(得分:3)

是的,你应该使用NotEmpty验证器。

$inputFilter = new \Zend\InputFilter\InputFilter ();
$inputFilter->add ([
  'name' => 'foo',
  'validators' => [
    [
      'name' => 'not_empty',
      'options' => [
        'type' => 'string'
      ]
    ]
  ]
]);

$form->setInputFilter ($inputFilter);