【问题标题】:Zend framework 2 optional form validationZend 框架 2 可选表单验证
【发布时间】:2014-05-17 20:11:24
【问题描述】:

我是 zend 框架的新手。我创建了一个表单,其中有 2 个文本字段。现在,我想验证其中一个是 not 空的,如果是,则表单是有效的。如何在 InputFilter 中设置这样的验证?

非常感谢任何帮助。

【问题讨论】:

    标签: zend-framework2 zend-form


    【解决方案1】:

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

    $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 验证器的文档: http://framework.zend.com/manual/2.0/en/modules/zend.validator.set.html#notempty

    【讨论】:

    • 感谢您的回答。我确实知道我的问题是如果有 2 个文本输入并且其中 1 个不允许为空,但这是随机的,用户填写哪个。那么我该如何验证这种情况呢?
    • 那么你是说如果他们填写了 input2 然后 input1(不能为空的那个)就不再需要了吗?
    • 然后检查input2是否为空,如果是,则保留input1的validator,如果input2已经填写,那么你可以禁用input1的validator,因为你不需要它.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多