0

我有一个包含许多字段的表单,其中 2 个包含代码。我想验证代码不匹配。这些是元素:

            'code1' => array('text', array(
                    'required' => true,
                    'label' => 'form-label-code-1',
                    'filters' => array('StringTrim'),
                    'attribs' => array('placeholder' => 'Code 1'),
                    'decorators' => array(
                        'ViewHelper',
                        array('HtmlTag', array('tag' => 'div')),
                        'Errors'
                    ),
                    'validators' => array(
                        array('Callback', true, array(
                                'callback' => array($cservice, 'checkCodesUsed'),
                                'messages' => array(
                                    Zend_Validate_Callback::INVALID_VALUE => 'form-error-code-exists'
                                )))
                    )
                )),
            'code2' => array('text', array(
                    'required' => true,
                    'label' => 'form-label-code-2',
                    'filters' => array('StringTrim'),
                    'attribs' => array('placeholder' => 'Code 2'),
                    'decorators' => array(
                        'ViewHelper',
                        array('HtmlTag', array('tag' => 'div')),
                        'Errors'
                    ),
                    'validators' => array(
                        array('Callback', true, array(
                                'callback' => array($cservice, 'checkCodesUsed'),
                                'messages' => array(
                                    Zend_Validate_Callback::INVALID_VALUE => 'form-error-code-exists'
                                )))
                    )
                )),

当前回调仅检查数据库中是否已存在值。如何指定同时具有 code1 和 code2 值的回调?我似乎无法理解 zend 文档。

4

1 回答 1

0

只需在表单本身中添加一个充当回调的函数即可解决此问题。

public function checkCodesNotEqual() 
{

    if ($this->getElement('code1')->getValue() === $this->getElement('code2')->getValue()){
        return false;
    }

    return true;
}
于 2013-10-04T11:33:23.950 回答