从字段中将另一个字段添加到验证器中

时间:2013-10-04 09:21:07

标签: zend-framework zend-validate

我有一个包含许多字段的表单,其中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文档。

1 个答案:

答案 0 :(得分:0)

只需在表单中添加一个函数作为回调来解决它。

public function checkCodesNotEqual() 
{

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

    return true;
}