2012-01-18 3 views
1

J'utilise le code ci-dessous pour valider par numéro de téléphone dans mon projet,validation du numéro de téléphone en utilisant zend framwork

$phone = new Zend_Form_Element_Text('phone', array(
     'label' => $view->_('phone'), 
     'value' => '', 
     'class' => 'text-size text hastip', 
     'title' => $qtips_messages['key_phone'], 
     'required' => true, 
     'tabindex' => '13', 
     'validators' => array(
           array('Digits', false, array(
        'messages' => array(
         'notDigits'  => "Phone Invalid Digits, ex. 1234567890", 
         'digitsStringEmpty' => "", 
        ))), 
       array('notEmpty', true, array(
        'messages' => array(
         'isEmpty' => 'Phone can\'t be empty' 
        ) 
       )), 
       array('StringLength', false, array(10, 10, 'messages' => array(
          'stringLengthInvalid'   => "Phone Length Invalid entry", 
          'stringLengthTooShort'   => "Phone Invalid Length , ex. 1234567890" 
        ))), 
      ), 
     'filters' => array('StringTrim'), 
     'decorators' => $this->requiredElementDecorators, 
     'description' => '<img src="'.$baseurl.'/images/star.png" alt="required" />', 
     'filters' => array('StringTrim') 
    )); 
    $this->addElement($phone); 

Cela fonctionne bien lorsque le champ est vide, invalide, longueur. mon exigence est, le champ de téléphone devrait accepter des espaces aussi comme 123 456 7890. Veuillez nous aviser à ce sujet.

Répondre

2

Je ne sais pas trop comment le validateur de chiffres gère les espaces, mais je suppose qu'il ne les autorisera pas (ou que vous ne publieriez pas ici). Ainsi, au lieu d'utiliser le validateur de chiffres, changez-le pour un validateur de regex. Je ne suis pas bon avec regex donc au lieu de moi de vous donner l'expression que je vous suggère de jeter un oeil à la page suivante contenant plusieurs expressions pour phoneNumbers: A comprehensive regex for phone number validation

Ajout du validateur devrait ressembler à:

array('regex', false, array('/^[0-9 ]+$/')) 

Comme je l'ai dit, je ne suis pas bon avec regex donc l'expression régulière elle-même pourrait ne pas être complètement exacte, mais l'ajout d'un validateur comme ça devrait résoudre votre problème.

Questions connexes