2013-10-04 177 views
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文檔的頭腦。

回答

0

通過在表單本身中添加一個函數來解決它,它充當回調函數。

public function checkCodesNotEqual() 
{ 

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

    return true; 
} 
相關問題