2010-04-29 3 views
1

La validation échoue comme elle le devrait mais ne renvoie pas le message d'erreur.Zend Framework Custom Validation Class Message d'erreur

 $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'), 

     ), 
    )); 

Custom Class:

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; 
} 

}

échoue juste ne donne pas l'erreur "IN_USE".

Répondre

1

Etes-vous sûr qu'il échoue dans votre validateur personnalisé? Essayez de vous assurer qu'il échoue réellement dans le validateur personnalisé.

Sinon, vérifiez si vous avez configuré chemin préfixe correct pour les éléments de la forme

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

Le code validateur personnalisé semble être très bien.

2

Est-ce que l'élément phone_number qui ne présente pas d'erreurs ou y at-il d'autres?

Avez-vous désactivé par défaut avec les décorateurs disableLoadDefaultDecorators?

Que diriez-vous de cette alimentation du validateur personnalisé dans un tableau:

$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

Pourriez-vous s'il vous plaît indiquer la différence? –