Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-09-2009 09:56:41

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Validation des formulaires sans Zend_Form

Salut à tous,

N'utilisant pas Zend_Form car je le trouve trop complexe et pas assez flexible, je me demandais tout bêtement, où faire la validation de mes formulaires (j'utilise bien Zend_Validate par contre ^^) ? Dans mes contrôleurs (si oui, je trouve que c'est pas terrible quand même si? :S) ?

Hors ligne

 

#2 17-09-2009 10:45:01

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Validation des formulaires sans Zend_Form

Tu peux utiliser Zend_Form pour la validation et Html pour concevoir le formulaire, ca marche aussi. Je le fais pour des formulaires complexes.


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#3 17-09-2009 10:58:40

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Ca m'intéresse fortement. smile
Comment procèdes-tu pour faire ça et où est l'intérêt dans ce cas là?

Merci de ta réponse.

Hors ligne

 

#4 17-09-2009 11:03:58

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Validation des formulaires sans Zend_Form


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#5 17-09-2009 11:18:48

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Pinaise, c'est pile poil ce que j'attendais de Zend_Form. Vraiment fantastique, merci beaucoup !

Hors ligne

 

#6 17-09-2009 11:22:30

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Serait-ce abuser que de te demander de nous montrer ta classe My_Form? ^^

Hors ligne

 

#7 17-09-2009 12:11:34

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Validation des formulaires sans Zend_Form

Bah y'a pas grand chose dans My_Form

Code:

<?php
class My_Form extends Zend_Form
{
    public function addElementFilters(array $filters)
    {
        foreach ($this->getElements() as $element) {
            $element->addFilters($filters);
        }
        return $this;
    }
}

J'ai juste ajouter une méthode qu'il n'y a pas dans zend_form. Tu peux extends zend_form si tu n'as pas besoin de la méthode addElementFilters.


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#8 17-09-2009 18:37:27

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Merci.

Autre question débile. Comment valider un champs, en fonction du résultat d'un autre champs ou encore en fonction du résultat du validator d'un autre champs?

Hors ligne

 

#9 17-09-2009 20:00:33

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Personne? smile

Hors ligne

 

#10 17-09-2009 20:49:38

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: Validation des formulaires sans Zend_Form

bah y a bien une methode isValid
$champ->isValid($value);

Donc tu dois vérifier si le champ à une valeur et si il est valide. si la condition est vérifier tu dois pouvoir valider l'autre champ. J'ai jamais tester mais ca doit étre faisable

Dernière modification par alien7 (17-09-2009 20:52:24)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#11 18-09-2009 08:33:09

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: Validation des formulaires sans Zend_Form

Ou bien il faut que tu créer t'es propre validate et les appliquer a t'es champs
class namespace_validate_nomValidate extends Zend_Validate_Abstract

Moi perso je l'ai ai mis dans library/plugin/MonNamespace/validate

je ne sais pas si c'est la bonne solution.....


A+ Guelo Super Star

Hors ligne

 

#12 18-09-2009 14:02:18

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Validation des formulaires sans Zend_Form

Petite remarque, le problème de Zend_Form n'est pas qu'il n'est pas assez flexible, mais plutôt qu'il est difficile à prendre en main.

Hors ligne

 

#13 21-09-2009 22:09:53

mdelanno
Membre
Lieu: Nord
Date d'inscription: 26-08-2007
Messages: 90
Site web

Re: Validation des formulaires sans Zend_Form

Tu peux aussi utiliser Zend_Filter_Input

Hors ligne

 

#14 22-09-2009 14:51:58

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Non non je veux vraiment juste valider mes input, pas les filtrer (enfin si, j'applique les filtres striptags et stringtrim a mes imputs mais c'est tout.

En gros je dois faire un inscription pour deux types de comptes différents (société ou membre) et comme il y a des infos communes ça m'embête de faire deux formulaires différents donc je veux les fusionner.
Le truc c'est que par exemple je veux que l'adresse soit obligatoire pour l'entreprise mais pas pour le membre.

Pour l'instant j'ai donc fait un truc comme ça (exemple avec le numéro de mobile, même cas qu'avec l'adresse) :

Code:

// Mobile
        if ($accountType == 'member') {
            $mobile->addValidator($validators['NotEmpty']);
        } elseif ($accountType == 'company') {
            $mobile->addValidator($validators['NotEmpty'], true);
        }
        if ($accountType == 'member' && ! $mobile->isValid($mobile->getValue())) {
            $mobile->removeValidator('NotEmpty');
        }
        if ($accountType == 'company' || $accountType == 'member' && $mobile->isValid($mobile->getValue())) {
            $mobile->addValidator($validators['Digits'])
                   ->addValidator($validators['StringLength']->setMin(8)->setMaxi(12));
        }

Je n'ai pas testé donc je n'ai aucune idée de si ça va marcher ou non. J'espère aussi que removeValidator() supprime les messages d'erreur associés à ce validateur...
bref si quelqu'un voit une meilleure solution...

Hors ligne

 

#15 22-09-2009 18:34:54

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Aidez moi please, ça me prend la tête et c'est plutôt urgent... sad

Hors ligne

 

#16 25-09-2009 20:08:21

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Bonsoir, petit souci de validateur, si quelqu'un voit le problème...

Si je fais :

Code:

// Login
        $login->addValidator($validators['NotEmpty'], true)
                ->addValidator($validators['Alnum']->setAllowWhiteSpace(true))
                ->addValidator($validators['StringLength']->setMin(6)->setMax(15));

Il me renvoie les erreurs des deux  derniers validateurs mais pas du NotEmpty.

Si je fais :

Code:

// Login
        $login->setRequired(true)
                ->addValidator($validators['NotEmpty'], true)
                ->addValidator($validators['Alnum']->setAllowWhiteSpace(true))
                ->addValidator($validators['StringLength']->setMin(6)->setMax(15));

Il me renvoie l'erreur des trois derniers validateurs, mais pas du required.

Si je fais :

Code:

// Login
        $login->setRequired(true)
                ->addValidator($validators['Alnum']->setAllowWhiteSpace(true))
                ->addValidator($validators['StringLength']->setMin(6)->setMax(15));

Il me renvoie bien l'erreur du required (mais je ne peux pas personnaliser le message d'erreur sad).

Merci d'avance si quelqu'un arrive à m'expliquer le pourquoi du comment.
Bonne soirée.

Hors ligne

 

#17 25-09-2009 21:05:04

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Validation des formulaires sans Zend_Form

alien7 a écrit:

Tu peux utiliser Zend_Form pour la validation et Html pour concevoir le formulaire, ca marche aussi. Je le fais pour des formulaires complexes.

Le problème c'est que  ce n'est pas pratique car , sans l'essayer, je pense que $form->popuate ne marchera pas ce qui alourdira les taches et le code

Hors ligne

 

#18 02-10-2009 09:50:11

Ender
Membre
Date d'inscription: 01-09-2009
Messages: 52

Re: Validation des formulaires sans Zend_Form

Salut alien7,

Encore un problème dont tu connaitras peut-être la solution : sur certains champs mes validateurs sont inefficaces. Ou plutôt non, c'est carrément mon form qui ne récupère pas la valeur dans $_POST. Et pourtant sur les autre champs ça marche très très bien. Je comprends absolument rien.

Exemple :
- J'ai deux bouton radio pour demander si l'utilisateur veut s'abonner à la newsletter, tout passe correctement.
- J'ai fait un copier coller en changeant juste le nom du champs et la haystack pour faire un champs avec trois boutons radio pour demander le titre de civilité et rien ne passe, il ne récupère pas la valeur dans le post...

Voila mon form HTML pour les deux champs (le premier marche très bien et pas l'autre) :

Code:

<div class="ligne">
    <span class="heading_case">Titre de civilité :</span>
    <span class="case">
        <input type="radio" value="miss" name="civilityTitle" id="tooltipsLocate"/> Melle
        <input type="radio" value="mrs" name="civilityTitle"/> Mme
        <input type="radio" value="mr" name="civilityTitle"/> Meur
        <span class="obg_fields">*</span>
    </span>
    <?php $this->formInputError('civilityTitle'); ?>
</div>

<div class="ligne" onmouseout="cache();" onmouseover="montre('<p><b>Description : </b>si vous souhaitez etre tenus informés régulierement, par mail, des nouveautés et des promotions de Wiki-RH, abonnez-vous à nos courriels d'information.</p>');">
    <span class="heading_case">S'abonner à la newsletter ?</span>
    <span class="case">
        <input id="tooltipsLocate" type="radio" name="newslettersSubscriber" value="yes" <?php if (isset($this->formValues) && isset($this->formValues['newslettersSubscriber']) && $this->formValues['newslettersSubscriber'] == 1): ?> checked="checked" <?php endif; ?>/> Oui
        <input id="tooltipsLocate" type="radio" name="newslettersSubscriber" value="no" <?php if (isset($this->formValues) && isset($this->formValues['newslettersSubscriber']) && $this->formValues['newslettersSubscriber'] == 0): ?> checked="checked" <?php endif; ?>/> Non
        <?php echo $this->formInputError('newslettersSubscriber'); ?>
    </span>
</div>

Dans mon Zend_Form :

Code:

$newslettersSubscriber = new Zend_Form_Element_Radio('newslettersSubscriber', array('setRegisterInArrayValidator' => false));
$civilityTitle = new Zend_Form_Element_Radio('civilityTitle', array('setRegisterInArrayValidator' => false));

// Newsletters subscription
$newslettersSubscriber->setRequired(true)
                                 ->addValidator($validators['NotEmpty'], true)
                                 ->addValidator($validators['InArray']->setHaystack(array('no', 'yes')));
        
// Civility title
$civilityTitle->setRequired(true)
                 ->addValidator($validators['NotEmpty'], true)
                 ->addValidator($validators['InArray']->setHaystack(array('miss', 'mrs', 'mr')));

PS 1 : pour le formInput Error, je ne fais pas de echo puisque le echo est directement dans le view helper
PS 2 : ça ne semble pas venir de mon $validators[] puisque les autres champs marchent à merveille (c'est juste un tableau renvoyé par un action helper qui m'initialise mes validateurs et qui met les messages d'erreur personnalisés aux validateurs demandés).

Ca fait plusieurs jours que je cherche et je ne vois vraiment pas le problème... Si quelqu'un trouve, je l'aime.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages