2009-11-19 4 views
1

Je pense ajouter une validation/un filtrage au champ de numéro de téléphone de mon application Zend Framework. Je ne sais pas si c'est quelque chose que je devrais faire ou pas.Validateur/filtre de numéro de téléphone utilisant jQuery ou Zend Form?

Je pensais qu'il pourrait être utile pour les utilisateurs d'avoir une telle fonctionnalité afin que je puisse appliquer un format d'affichage particulier. Je ne suis pas sûr si le formatage du numéro de téléphone doit être stocké dans la base de données, ou quand il est extrait de la base de données. Je ne veux pas être trop strict à ce sujet parce que ce n'est pas vraiment important. Je voulais juste empêcher la moitié des gens d'entrer 123.456.7890 comme format de leur numéro de téléphone et l'autre moitié entrer (123) 456-7890 comme l'autre format. Je veux que la liste des numéros de téléphone semble cohérente. Alors peut-être que je devrais utiliser un javascript pour aider l'utilisateur à entrer leur numéro? Peut-être y a-t-il un plugin jQuery qui le fait déjà et je peux l'intégrer avec mon Zend Form?

Qu'en pensez-vous?

Répondre

2

Vous voulez toujours faire respecter la validation à la fin de retour en tant que javascript validation peut être facilement contournée. Ceci est mon plugin de validation qui force 1,1234567890:

class App_Validate_Phone extends Zend_Validate_Abstract 
{ 
    const NOT_VALID = 'phoneInvalid'; 

    protected $_messageTemplates = array(
     self::NOT_VALID => "Phone number '%value%' must be in the format +COUNTRYCODE.PHONENUMBER. Example: +1.4071234567" 
    ); 

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

     if (!preg_match('/^\+([0-9]+)\.([0-9]+)$/',$value)) { 
      $this->_error(self::NOT_VALID); 
      return false; 
     } 

     return true; 
    } 
} 

Si vous validation téléphone Google regex vous pouvez trouver un certain nombre d'expressions régulières de validation que vous pouvez remplacer dans preg_match() pour vos besoins particuliers.

0

Vous n'avez pas besoin de créer un validateur personnalisé pour les téléphones. Zend a une proposition pour un validateur de téléphone utilisant la localisation. Même s'il n'est pas encore prêt, vous pouvez utiliser le validateur Regex:

//Add element for phoneNumber1 
$this->addElement('text', 'phoneNumber1', array(
    'label'  => 'Primary Phone Number', 
    'required' => false, 
)); 
$phone1 = $this->getElement('phoneNumber1'); 
$phone1->addValidator('regex', false, array('pattern' => '^[2-9][0-9]{2}-[0-9]{3}-[0-9{4}$', 'messages' => 'Enter a valid Phone Number'));