Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-12-2010 12:02:40

web2h
Nouveau membre
Date d'inscription: 15-12-2010
Messages: 8

Zend form validateur non utilisé

Bonjour,

J'ai un petit problème :
J'ai mon formulaire qui contient une select box avec différentes options et à la fin, j'ai l'option "autres"
Si cette option "autres" est choisie, je demande de renseigner un champ texte afin de préciser ce que "autres" signifie.

Si "autres" est choisi, le champ texte devient obligatoire. J'ai donc rajouté un validateur sur ce champ texte afin de valider qu'il y a bien quelque chose si, et seulement si, "autres" est sélectionné.

Seul problème, à la base, le champ de texte de précision n'a pas été mis à required (avec setRequired(true)).
Donc mon validateur maison n'est pas appelé (Bug ou fait exprès, je ne sais pas et peu importe).

Le seul moyen que j'ai trouvé, c'est de mettre setRequired (true) et de bidouiller afin d'afficher le bon message.

Y'a t'il un moyen de résoudre mon problème de façon plus propre?

Hors ligne

 

#2 29-12-2010 19:14:18

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Zend form validateur non utilisé

Ce que tu peux faire, c'est surcharger la fonction isValid() (j'assume que ton formulaire hérite de la classe Zend_Form). Attention, je suis pas allé vérifier la syntaxe, mais faire quelque chose du genre :

Code:

public function isValid(array $values)
{
    if($this->getValue('maSelectBox') === 'autres')
        $this->getElement('monElementTexte')->setRequired(true);

    return parent::isValid($values); // NE SURTOUT PAS OUBLIER CETTE LIGNE
}

Donc dans ton code de création du formulaire, tu ne mets pas de setRequired sur ton élément texte (on assume par défaut que l'utilisateur va choisir une valeur parmi cellse proposées), et uniquement si la valeur vaut 'autres', alors on ajoute le validateur par la fonction setRequired.

Tu as un sûrement moyen de faire autrement, en ajoutant un validateur de type Callback, mais la solution précédente est la plus simple et plus propre.

Dernière modification par bakura (29-12-2010 19:14:35)

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