Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-12-2009 23:45:51

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

[Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Bonsoir à tous...
je continue mon apprentissage du framework, et je coince depuis le début d'après midi sur les formulaires...
J'ai créé un formulaire dont le but est l'enregistrement d'utilisateur. Mon problème c'est qu'un fois le formulaire affiché, lorsque je clique sur le bouton de validation, il ne se passe rien du tout... rien de rien...

Voilà un bout de mon code :
   function registerAction()
    {
        $this->view->title = "Création d'un compte";
        $this->view->selectedIndex = "";       
        $this->view->selectedCompte = "";

        $this->view->selectedInscription = "current";
        $this->view->selectedAbout = "";
        $this->view->selectedFAQ = "";
        $this->view->form = array();
        $this->view->form = new Myappli_Form_Register();
        $this->view->form->setMethod('post');
    $this->view->form->setAction('compte/adduser');   

La page compte/adduser n'est jamais afficher lorsque je clique sur le bouton de validation.

Mon formulaire se trouve dans un fichier php ailleurs... il s'affiche correctement...

merci pour votre aide.

Dernière modification par mymt (21-01-2010 13:14:45)

Hors ligne

 

#2 30-12-2009 04:05:24

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

peut-on voir le code php/html du formulaire?

Dernière modification par 3uclide (30-12-2009 04:05:53)

Hors ligne

 

#3 30-12-2009 15:18:48

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Hello,
Je reviens.. y'a du mieux.. J'avais une erreur de syntaxe qui plantait le formulaire. Mais pour autant j'ai un autre soucis.
En fait, lorsque je poste mon formulaire, je voudrais détecter que mon formulaire a été posté (en utilsiant la même action). Pour se faire, j'utilise isPost(), mais ca me détecte jamais rien. Pourtant dans l'url, il y a bien tout les paramêtres qui sont passés...

Voici mon formulaire :

Code:

<?php
//Formulaire d'inscription

class Appli_Form_Register extends Zend_Form
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        
        $login = new Zend_Form_Element_Text("login", array('size' => 25));
        $loginDoesntExist = new Zend_Validate_Db_NoRecordExists('membres', 'login');
        $login ->setLabel('Identifiant')
          ->addFilter('StripTags')
          ->addFilter('StringTrim')
          ->addValidator('NotEmpty')
          ->addValidator($loginDoesntExist)
          ->addValidator('StringLength', false, 3, 20)
          ->setDescription("L'identifiant doit être composé de 3 and 20 caractères alphanumériques");
    

    $emailDoesntExist = new Zend_Validate_Db_NoRecordExists('membres', 'email');
    $email = new Zend_Form_Element_Text("email", array('size' => 25));
    $email ->setLabel('Adresse Email')
    ->addFilter('StripTags')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty')
    ->addValidator($emailDoesntExist)
    ->addValidator('EmailAddress')
    ->setDescription("Adresse email valide.");
  
    $password = new Zend_Form_Element_Password("password", array('size' => 25));
    $password ->setLabel('Mot de passe')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty');

    $repassword = new Zend_Form_Element_Password("repassword", array('size' => 25));
    $repassword ->setLabel('Retapper le mot de passe')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty');
    $repassword->setDescription("Retapper votre mot de passe pour prévenir toute erreur.");

    //Nom
    $nom = new Zend_Form_Element_Text("nom", array('size' => 25));
    $nom ->setLabel('Votre nom')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty');

    //Prenom
    $prenom = new Zend_Form_Element_Text("prenom", array('size' => 25));
    $prenom ->setLabel('Votre prénom')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty');

    
    //telMobile must be unique
    $telMobile = new Zend_Form_Element_Text('telMobile');
    $telMobile->setLabel('Téléphone Mobile')
    ->addValidator('TelMobile')
    ->addValidator('NotEmpty');
    
    
    //Pays
    $pays = new Zend_Form_Element_Select('pays');
    $tabpays=array('France'=>'France','Belgique'=>'Belgique');
    $pays->setMultiOptions($tabpays);
    $pays->setLabel('Pays')
    ->addValidator('NotEmpty');
    
    
    $this->setDecorators( array( array('ViewScript', array('viewScript' => 'compte/registerform.phtml'))));
    $this->addElements(array($login,$email, $password, $repassword,$nom,$prenom,$telMobile,$pays));

}

public function isValid($value)
    {
        $this->_setValue((string) $value);

        if ($value !== $this->_compare)  {
            $this->_error(self::PASSWORD_MISMATCH);
            return false;
        }

        return true;
    }
}

Mon fichier registerFrom.phtml

Code:

<form action="<?php $this->escape($this->element->getAction()) ?>" method="<?php $this->escape($this->element->getMethod()) ?>" id="myform">
<fieldset>
  <legend><?php echo $this->translate('Créer un compte gratuitement'); ?></legend>
    <ul class="formRegister">
      <?php 
      foreach($this->element as $element): 
      
      ?>
      
        <li>
            <span>
                <?php echo $this->formLabel($element->getName(),$element->getLabel()) ?>
           <?php echo $element->renderDescription() 
        ?>
      </span>
      <?php if($element->getName() == "recaptcha"): ?>
      <?php echo $element->render();?>
      <?php else:?>
      <?php echo $this->{$element->helper}(
                         $element->getName(),
                         $element->getValue(),
                         $element->getAttribs(),
                         (method_exists($element,'getMultiOptions')) ? $element->getMultiOptions() : ''
      ) ?>
      <?php endif;?>
        <?php echo $this->formErrors($element->getMessages()) ?>
        </li>
      <?php endforeach; ?>
    </ul>
  <p><input type="submit" id='submit' value="<?php echo $this->translate('Register'); ?>" /></p>
</fieldset>
</form>

En l'action de mon controller

Code:

       function registerAction()
    {
        $this->view->selectedIndex = "";        
        $this->view->selectedCompte = "";

        $this->view->selectedInscription = "current";
        $this->view->selectedAbout = "";
        $this->view->selectedFAQ = "";

        $this->view->form = $form = new Appli_Form_Register;
                         
        if($post = $this->getRequest()->isPost()){
            $formData = $this->getRequest()->getPost();
            if($form->isValid($formData)){
                // Traitement
                        $this->view->title = " Création d'un compte blabla";

            }else{
                    $this->view->title = " Création d'un compte sanchez dos santos";

                $form->populate($formData);
            }
        }
        else {
        $this->view->title = "$this->getRequest() // $this->getRequest()->isPost()";

        }

Dernière modification par Mr.MoOx (30-12-2009 15:37:57)

Hors ligne

 

#4 30-12-2009 15:40:38

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

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Ce test est pas terrible...

Code:

if($post = $this->getRequest()->isPost()){

Une affectation a tendance a souvent renvoyer true...
Moi je fais souvent comme ça

Code:

if($this->getRequest()->isPost() and $form->isValid($this->getRequest()->getPost())){

Hors ligne

 

#5 30-12-2009 16:04:53

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

ce n'est pas au test mais à la constructuion
j'ai lu en diagonale
mais je n'ai pas vu que tu passait ton formulaire en post

A+JYT

Hors ligne

 

#6 30-12-2009 16:05:04

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Merci pour ta réponse.
J'ai eu la même idée... j'ai donc changé le code pour uniqueent tester la request. Je veux pas effectué en même temps le test de validation. En fait ca me permet de vérifier notamment que ca marche.
Avec le code actuel, je devrais pouvoir avoir un titre différent en fonction du moment (formulaire envoyé ou non)

Code:

f($this->getRequest()->isPost()){
            $formData = $this->getRequest()->getPost();

            if($form->isValid($formData)){
                // Traitement
                        $this->view->title = " Création d'un compte blabla";

            }else{
                    $this->view->title = " Création d'un compte sanchez dos santos";

                $form->populate($formData);
            }
        }
        else {
        $this->view->title = "ca marche pas du tout du tout";

        }

mais toujours rien.. ca marche pas...

Hors ligne

 

#7 30-12-2009 16:07:21

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

sekaijin a écrit:

ce n'est pas au test mais à la constructuion
j'ai lu en diagonale
mais je n'ai pas vu que tu passait ton formulaire en post

A+JYT

Sauf erreur de ma part, c'est fait dans mon fichier registerform.phtml

Code:

<form action="<?php $this->escape($this->element->getAction()) ?>" method="<?php $this->escape($this->element->getMethod()) ?>" id="myform">
<fieldset>
  <legend><?php echo $this->translate('Créer un compte gratuitement'); ?></legend>

J'ai fait un echo sur la méthode et je suis bien en post... par contre action est vide (ce qui doit renvoyer sur la même page non??)

Je viens de fqire un essai en ajoutant la méthode lors de la création du formulaire et c'est toujours pas mieux...

Code:

$this->view->form = $form = new Appli_Form_Register;
                    $form -> setMethod('post');

Dernière modification par mymt (30-12-2009 16:11:22)

Hors ligne

 

#8 30-12-2009 16:09:43

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

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Ca dépends des navigateurs, je te conseille par expérience (mauvaise) de toujours fournir une action, même si tu dois utiliser la request_uri

Hors ligne

 

#9 30-12-2009 16:14:17

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Mr.MoOx a écrit:

Ca dépends des navigateurs, je te conseille par expérience (mauvaise) de toujours fournir une action, même si tu dois utiliser la request_uri

Je viens de faire le test que tu proposes... et c'est toujours pas ça... je suis deg'!
Normalement, si mon URL contient toutes les variables du formulaire... c'est qu'il est bien passé ce foutu formulaire non??

Hors ligne

 

#10 30-12-2009 16:16:12

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

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Oui qu'il est passé en GET. les variables POST ne se voient pas dans l'url.

Hors ligne

 

#11 30-12-2009 16:18:30

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

oups... benh là je comprends non plus pourquois ca passe en GET....
J'ai pourtant spécifier post au niveau de la method...

Est-ce qu'il vaut mieux forcer la méthode dès le fichier PHP qui décrit le formulaire??

Hors ligne

 

#12 30-12-2009 16:20:19

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

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

C'est au niveau du client que se fait le choix. Si ton form contient method="post" y'a pas de raison. N'y a-t-il pas un javascript qui ferait sa loi ?

Hors ligne

 

#13 30-12-2009 16:24:23

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Et bien je crois pas... mise à part mon menu qui utilise javascrit et JQuery, j'ai pas de JAVA sur la page...
Bon j'ai mis en dur la méthode, et cette fois ci j'ai un message d'erreur de barbare du framwork.
exception 'Zend_Form_Exception' with message 'Method _setValue does not exist'

Il faut que je vois d'ou ça vient...

Désolé pour cette boulette de base, mais je débute avec Zend et mon PHP n'est plus tout jeune wink

Hors ligne

 

#14 31-12-2009 03:01:14

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

Montre nous le code html généré...

je ne crois pas qu'il est nécessaire d'utiliser $this->escape() sur tous tes "echo".

Tu peux aussi essayé le rendu automatique du formulaire pour voir si ça fonctionne:

registerFrom.phtml

Code:

echo $this->form;

Hors ligne

 

#15 15-01-2010 21:19:51

mymt
Membre
Lieu: PACA
Date d'inscription: 25-09-2009
Messages: 93

Re: [Résolu]Bouton de validation de formulaire qui ne fait rien du tout

résolu... ne me demander pas trop comment car c'étiat pas clair pour moi. J'ai codé le submit de façon différente et ça a marché.. dur dur l'apprentissage de zend!
merci pour votre aide à tous.

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