2010-04-29 66 views
1

驗證失敗,因爲它應該但不返回錯誤消息。Zend Framework自定義驗證類錯誤消息

 $form->addElement('text', 'phone_number', array(
    'required' => true, 
     'validators' => array(
     array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')), 
      array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/', 
       'messages' => 'Enter a valid Phone Number' 
    )), 
      'CheckPhoneNumber'), 

     ), 
    )); 

自定義類:

class Custom_Validators_CheckPhoneNumber extends Zend_Validate_Abstract{ 
const IN_USE = 'inUse'; 

protected $_messageTemplates = array(
    self::IN_USE => "'%value%' is currently in use" 
); 

public function isValid($value) 
{ 
    $this->_setValue($value); 

     $user_check = Users::getActive(preg_replace("/[^0-9]/", "", $value)); 
     if($user_check->id){ 
      $this->_error(self::IN_USE); 
      return false; 
     } 

    return true; 
} 

}

只是失敗並沒有給 「IN_USE」 的錯誤。

回答

1

你確定它在自定義驗證器中失敗嗎? 嘗試確保它在自定義驗證程序中實際失敗。

如果沒有,請檢查您是否有正確的前綴配置爲形式的元件的路徑

$form->addElementPrefixPath(
    'Custom_Validators', 
    'Custom/Validators', 
    'validate' 
); 

用於自定義驗證的代碼似乎是罰款。

2

它只是phone_number元素不顯示錯誤或有其他人嗎?

你有關閉默認裝飾器disableLoadDefaultDecorators

這個怎麼樣提供陣列中的自定義驗證:

$form->addElement(
    'text', 'phone_number', array(
     'required' => true, 
     'validators' => array(
      array(
       'NotEmpty', true, array(
        'messages' => 'Enter a valid Phone Number' 
       ) 
      ), 
      array(
       'regex', false, array(
        'pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/', 
        'messages' => 'Enter a valid Phone Number' 
       ) 
      ), 
      array(
       'CheckPhoneNumber' 
      ) 
     ) 
    ) 
); 
1
$form->addElement('text', 'phone_number', array(
'required' => true, 
    'validators' => array(
    array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')), 
     array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/', 
      'messages'=>array(Zend_Validate_Regex::NOT_MATCH=>'%value% is not a valid phone') 
)), 
     'CheckPhoneNumber'), 

    ), 
)); 
+0

可否請你指出的區別? – 2012-12-17 00:05:47