Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je débute avec ZF et là, je dois avouer que je patauge énormément.
Dans une action, j'ai ce code :
$validator_pseudo = new Zend_Validate_Regex("`^[a-zA-Z0-9\_\-\ ]{4,16}$`"); $validator_pseudo->setMessage('Votre pseudonyme doit être composé de 4 à 16 caractères et contenir uniquement des lettres, chiffres, tirets, underscores et espaces.'); $pseudo = new Zend_Form_Element_Text('pseudo'); $pseudo->setLabel('Choisissez le nom de votre personnage (pseudonyme)') ->setRequired(true) ->setDescription('Votre pseudonyme doit être composé de 4 à 16 caractères (uniquement des lettres, chiffres, tirets, underscores et espaces).<br/>Choisissez-le bien : il ne pourra plus être modifié !') ->addValidator($validator_pseudo); [...] $mail = new Zend_Form_Element_Text('mail'); $mail->setLabel('Saisissez votre courriel/adresse e-mail') ->setRequired(true) ->setDescription('Nous vous enverrons votre code de confirmation à cette adresse.') ->addValidator('EmailAddress', true); $submit = new Zend_Form_Element_Submit('go'); $submit->setLabel('Go !'); $this->addElements( array($pseudo, $mail, $submit) ); $this->clearDecorators(); $this->addDecorator('FormElements') ->addDecorator('Form') ->addDecorator('Description'); $this->setElementDecorators(array( array('ViewHelper'), array('Errors'), array('Description', array('escape' => false)), array('Label', array('separator' => ' ')), array('HtmlTag', array('tag' => 'div', 'class'=>'row_form')), )); $submit->setDecorators(array( array('ViewHelper'), array('Description'), )); if ($this->getRequest()->isPost()) { $joueurs = new Joueurs(); // Joueurs est une table $pseudo_r = $form->getValue('pseudo'); $mail_r = $form->getValue('mail'); // est-ce que le pseudo ou le mail existe ? $exists = $joueurs->fetchRow('pseudo="'. $pseudo_r .'" OR mail="'. $mail_r .'"'); if ($form->isValid($_POST)) { $this->_forward('confirm'); } } $this->view->form = $form;
Et je n'arrive tout simplement pas à récuperer les valeurs des champs "pseudo" et "mail" : rien, nada, tout est vide. Alors que d'après LiveHTTPHeader (extension Firefox), les champs sont correctement envoyés au serveur lors de l'envoi du formulaire...
Où pourrait être le problème ?
Merci d'avance.
Hors ligne
Salut
Dans ton code tu essaie d'acceder aux elements du formulaire avant que celui-ci ait connaissance des donnees qui ont ete envoyees en post :
$pseudo_r = $form->getValue('pseudo'); $mail_r = $form->getValue('mail');
Il faudrait que tu y accede apres avoir execute $form->isValid($_POST).
Mais en fait vu que tu as pour but de valider des elements de ton formulaire, tu devrais plus regarder du coté des validateurs.
Il faudrait que tu fasse ton propre validateur, qui sera executé au moment du isValid() et qui aura accès aux données du formulaire.
Dernière modification par Mat (25-07-2008 21:04:29)
Hors ligne
Okay, je vais regarder ça de plus près. Merci
Hors ligne
Pages: 1