IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Validation numéro de téléphone


Sujet :

Zend_Form PHP

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut Validation numéro de téléphone
    Bonjour,

    Dans un formulaire, un champ devant contenir un numéro de téléphone.
    Pour le valider, j'utilise d'abord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->addValidator('Digits', true)
    .
    J'aimerais aussi valider sa longueur à 10 chiffres mais le validator StringLength ne fonctionne pas pour les nombres.
    Citation Envoyé par Doc ZF
    75.2.27. StringLength

    Ce validateur vérifie la longueur d'une chaine de caractères.
    Zend_Validate_StringLength ne supporte que les chaines Zend_Validate_StringLength ne fonctionnera pas avec les entiers, flottants, les dates ou encore les objets.
    J'essaie alors de faire la validation dans le contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    				// Validation numéro de téléphone
    				if($values['prs_telephone'] != '' && strlen($values['prs_telephone']) != 10)
    				{
    					$erreur = 'Votre numéro de téléphone doit contenir 10 chiffres';
    					$form->prs_telephone->addErrorMessage($erreur);
    					$form->populate($formData);
    				}
    Mes tests montrent qu'un mauvais numéro de téléphone entraîne le passage dans le IF mais par contre le populate n'entraîne pas l'affichage de l'erreur.

    Comment faire ?

    Existe t-il un validator pour numéros de téléphones ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Le plus simple je pense est de créer ton propre validateur, tu créé un validateur du style Zend_Validate_PhoneNumber et dedans tu vérifie la validité du tel via une simple expression régulière


    Les boutons et existent, servez-vous en

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Et si tu es très motivié tu ajoute à cela la gestion des indicateurs en fonction du pays via Zend_Local et la tu deviens un chef et je te le pique comme ça j'ai pas à le faire xD

  4. #4
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par shadypierre Voir le message
    Et si tu es très motivié tu ajoute à cela la gestion des indicateurs en fonction du pays via Zend_Local et la tu deviens un chef et je te le pique comme ça j'ai pas à le faire xD
    Très bonne idée, moi aussi je mettrait bien ça dans ma banque de codes s'il le fait


    Les boutons et existent, servez-vous en

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Le projet contenant le besoin d'un validator de numéro de téléphone a été provisoirement mis de côté. J'y reviendrai sans doute à l'automne.

    En attendant, je fais du Basic d'OpenOffice et du Drupal/MySQL.

    Que cela ne vous empêche pas de vous coller à ce problème ; je serais heureux de bénéficier du code et vous aurez même l'honneur de le voir cité en bonne place sur mon blog !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Le projet contenant le besoin d'un validator de numéro de téléphone a été provisoirement mis de côté. J'y reviendrai sans doute à l'automne.

    En attendant, je fais du Basic d'OpenOffice et du Drupal/MySQL.

    Que cela ne vous empêche pas de vous coller à ce problème ; je serais heureux de bénéficier du code et vous aurez même l'honneur de le voir cité en bonne place sur mon blog !
    Bon je vais essayer de m'y coller cet aprem pendant que le patron est en réunion


    Les boutons et existent, servez-vous en

  7. #7
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Voila c'est fait, il faut ajouter la classe que j'ai mis en pièce jointe dans le dossier Zend/Validate.

    Je n'ai mis que le format francais, et une ébauche du format américain (en fait pour le format américain je n'ai vérifié que si il y avait 10 chiffres ^^), pour les autres formats je ne les connais pas donc si tu veut en ajouter, ajoute l'expression régulière dans le switch de la fonction isValid

    Pour l'utiliser il y a plusieurs moyens, soit tu instancie le validateur sans paramètre, dans ce cas il utilise le local présent dans le registre, soit tu lui passe un string contenant le locale voulu.
    Exemple, pour valider un tel américain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Zend_Validate_PhoneNumber('en_US');
    Voila, dit moi si ca te vas
    Fichiers attachés Fichiers attachés


    Les boutons et existent, servez-vous en

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Je verrai ça plus tard mais je te suggère de proposer ça aussi dans le forum ZF français, voire américain.
    Ce sera sûrement utile à beaucoup.

    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par amoiraud Voir le message
    Voila c'est fait, il faut ajouter la classe que j'ai mis en pièce jointe dans le dossier Zend/Validate.

    Je n'ai mis que le format francais, et une ébauche du format américain (en fait pour le format américain je n'ai vérifié que si il y avait 10 chiffres ^^), pour les autres formats je ne les connais pas donc si tu veut en ajouter, ajoute l'expression régulière dans le switch de la fonction isValid

    Pour l'utiliser il y a plusieurs moyens, soit tu instancie le validateur sans paramètre, dans ce cas il utilise le local présent dans le registre, soit tu lui passe un string contenant le locale voulu.
    Exemple, pour valider un tel américain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Zend_Validate_PhoneNumber('en_US');
    Voila, dit moi si ca te vas
    L'expression régulière "/^0[1-68][0-9]{8}$/" n'est pas correcte :
    Elle n'accepte pas les numéros en 07, 09
    Et il me semble que j'avais réussi à faire accepter un numéro à 11 chiffres genre "06712345678", mais là, ça ne marche plus .

    Bref, je propose simplement "/^0[1-9][0-9]{8}$/"

Discussions similaires

  1. Expression regex pour valider numéro téléphone en France
    Par lordrt dans le forum Général Java
    Réponses: 11
    Dernier message: 15/12/2013, 08h51
  2. [RegEx] validation d'un numéro de téléphone par regex
    Par laurentSc dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2010, 23h22
  3. validation numéro de téléphone
    Par foxbille dans le forum Cobol
    Réponses: 2
    Dernier message: 22/07/2008, 14h40
  4. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 10h25
  5. [PHP-JS] Validation de numéro de téléphone
    Par Dsphinx dans le forum Langage
    Réponses: 7
    Dernier message: 22/11/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo