Zend framework2 Zend framework 2可选表单验证

Zend framework2 Zend framework 2可选表单验证,zend-framework2,zend-form,Zend Framework2,Zend Form,我是zend framework的新手。我创建了一个表单,其中有两个文本字段。现在,我想验证其中一个是否为而不是空,如果为空,则表单有效。如何在InputFilter中设置这样的验证 非常感谢您的帮助 要在输入过滤器中设置验证器,您可以在验证器类中执行以下操作: $inputFilter->add($factory->createInput(array( 'name' => 'foo_bar_input', 'required' => true,

我是zend framework的新手。我创建了一个表单,其中有两个文本字段。现在,我想验证其中一个是否为而不是空,如果为空,则表单有效。如何在InputFilter中设置这样的验证


非常感谢您的帮助

要在输入过滤器中设置验证器,您可以在验证器类中执行以下操作:

$inputFilter->add($factory->createInput(array(
    'name'     => 'foo_bar_input',
    'required' => true,
    'filters'  => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim')
    ),

    // add your validators here         
    'validators' => array(
        // check to see if an input is empty
        array(
            'name'    => 'Zend\Validator\NotEmpty',
            'options' => array(),
        )
    )
)));
然后,要在表单中使用筛选器,请执行以下操作:

$validate = $this->getServiceLocator()->get('your_validator_class');
$form->setInputFilter($validate->getInputFilter());
只需检查您的表单是否有效:

if ($form->isValid()) 
{ 
    // do stuff
}
以下是ZF2关于NotEmpty验证器的文档:

谢谢您的回答。我知道这是我的问题,如果有2个文本输入,其中1个不允许为空,但这是随机的,用户填写一个。那么我如何验证这种情况呢?那么你是说如果他们填写了input2,那么就不再需要input1(不能为空的那个)?然后检查input2是否为空,如果为空,则保留input1的验证程序,如果input2已填写,那么您可以禁用input1的验证程序,因为您不需要它。