Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-04-2012 16:06:18

J0r
Membre
Date d'inscription: 27-04-2012
Messages: 57

[Résolu] [ZF_1.11] Validateur et formulaire

Bonjour,

Dans une fichier de vue (.phtml) je définis mon formulaire, ainsi que mes champs de saisie que j'ajoute dans ce formulaire.
Une fois tous mes champs de saisie créé et ajouté dans mon formulaire, j'écris mon formulaire, mais sans faire un echo $form.

Code:

//Définition des attributs du formulaire
$form->setAction($this->baseUrl.'/user/valid')
     ->setMethod('POST')
     ->setView($view);
    
//Création du champs texte Courriel    
$sai_email = new Zend_Form_Element_Text('email');
$sai_email->setLabel('Courriel : ')
          ->setRequired(true)
          ->addValidator(new Zend_Validate_StringLength(10))
          ->setValue($this->email);
          
//Création du champs texte Nom
$sai_nom = new Zend_Form_Element_Text('nom');
$sai_nom->setLabel('Nom : ')
        ->setValue($this->nom);    

//Création du champs texte Prénom
$sai_prenom = new Zend_Form_Element_Text('prenom');
$sai_prenom->setLabel('Prénom : ')
        ->setValue($this->prenom);    
        
//Création du bouton de validation
$btn_valider = new Zend_Form_Element_Submit('Valider');
$btn_valider->setLabel('Valider');

//Ajout des éléments dans le formulaire
$form->addElements(array($sai_email,$sai_nom,$sai_prenom));


//Supprime les balises inutiles                         
foreach($form->getElements() as $element) {
    //Supprime les <dd></dd> (balise input, select, ...) et les <dt></dt> (Balise label)
    $element->removeDecorator('HtmlTag')
            ->getDecorator('Label')->setTag(null);
}

//Supprime les balises inutiles pour le bouton submit
$btn_valider->removeDecorator('DtDdWrapper');

    
//Création du formulaire
echo '<form action="'.$form->getAction().'" method="'.$form->getMethod().'">
        <div>
            <p>'.$sai_email->renderLabel().'<br/>'.$sai_email->renderViewHelper().'</p>
            <p>'.$sai_prenom->renderLabel().'<br/>'.$sai_prenom->renderViewHelper().'</p>
            <p>'.$sai_nom->renderLabel().'<br/>'.$sai_nom->renderViewHelper().'</p>
            '.$btn_valider.'
        </div>
    </form>';

Jusqu'ici tout va bien, j'aimerais maintenant ajouter des validateurs dans mes champs, j'ajoute mes validateurs et j'ai vu qu'il fallait tester ceci :

Code:

    if ($form->isValid($_POST)) {
        // succès!
    } else {
        // echec!
    }

Le soucis c'est que ce code ne fonctionne que si je fais un echo de mon $form, et comme je veux maitriser l’écriture de celui-ci j'aimerai ne pas passer par cette méthode.

Est-il possible de faire fonctionner le $form->isValid() ou faut il que je test la validité de mes champs dans mon controleur ?

Dernière modification par J0r (18-05-2012 15:34:20)

Hors ligne

 

#2 27-04-2012 16:27:13

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] [ZF_1.11] Validateur et formulaire

Salut,

je crois que tu n'as pas très bien compris comment fonctionnait le ZF.

Tu dois avoir une classe où tu définis ton formulaire (un fichier .php), tu instancies ce formulaire dans ton contrôleur (fichier .php) et ce contrôleur transmet le formulaire à ta vue (fichier .phtml) qui va l'afficher. C'est donc dans ton contrôleur que tu fais les tests type $form->isValid() ...

Je t'invite à aller lire la documentation officielle car j'ai l'impression qu'il te manque des brides pour avancer convenablement.

Hors ligne

 

#3 18-05-2012 15:24:03

J0r
Membre
Date d'inscription: 27-04-2012
Messages: 57

Re: [Résolu] [ZF_1.11] Validateur et formulaire

Ça fonctionne mieux maintenant, merci (réponse un peu tardive dsl).

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