Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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.
//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 :
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
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
Ça fonctionne mieux maintenant, merci (réponse un peu tardive dsl).
Hors ligne
Pages: 1