Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-08-2011 15:27:40

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

[Résolu]integrer plusieurs formulaire dans une seule page

j'ai une page qui contient plusieurs formulaires qui n'ont rien à voir entre eux, par exemple un pour se logger, un pour faire une recherche sur le site, et un pour créer un nouvel utilisateur.

Jusqu'ici tout marchait très bien. Et puis un beau jour je me lance à créer un nouvel utilisateur et mauvaise surprise, voilà qu'au moins deux formulaires se trouvent soumis en même temps avec un seul clic. Le formulaire de création du nouvel utilisateur est bien pris en compte sans erreur, mais je me retrouve avec un message d'erreur pour une variable vide inattendue dans la soumission accidentelle de l'autre formulaire.

les codes des formulaires ne se chevauchent pas, et je ne vois pas pourquoi le bouton submit de l'un active l'autre !! Quelqu'un à déjà eu à démêler ce genre de problème ? une idée quelconque ?

Dernière modification par wemalo (09-09-2011 22:53:52)

Hors ligne

 

#2 24-08-2011 18:25:14

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Bonjour, les 2 formulaires contienne 2 bouton sumbit ? ou les 2 fomulaire pour un sumbit ?

Hors ligne

 

#3 24-08-2011 23:51:41

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

les 2 formulaires contienne 2 bouton submit.

Hors ligne

 

#4 25-08-2011 07:19:47

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: [Résolu]integrer plusieurs formulaire dans une seule page

si tu essayai de faire q'un seul submit et de vérfier après un envoie après un Zend_debug::dump($form->getRequest($resultat)) par exemple , que la saisie des 2 forumaire on été enregistrer .

Hors ligne

 

#5 25-08-2011 15:42:55

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

oui c'est vrai, après l'envoi, la saisie des deux formulaires on été enregistrer.

Mais moi je veux n'enregistrer qu'un seule formulaire par envoie, je veux que les deux formulaires soit indépendants.

Hors ligne

 

#6 25-08-2011 17:19:12

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: [Résolu]integrer plusieurs formulaire dans une seule page

là je pense que tu n' pas le choix de faire 2 page différente

tu met le 1er formulaire, puis un bouton suite et le deuxième formulaire.

sinon je ne suis pas assez callé avec Zend, peut être qu'il faut voir du côté Ajax ou javascript.

je ne pourrais pas t'aider plus....

Hors ligne

 

#7 25-08-2011 17:30:33

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Pourrais-tu donner le code de tes controlleurs et vues ?

Normalement tu peux en mettre 2 sur une même page sans problème...

Hors ligne

 

#8 25-08-2011 17:39:17

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Pas de probleme pour faire deux formulaires sur un meme controller, tu dois avoir un probleme au niveau du nommage de tes formulaires.

Hors ligne

 

#9 25-08-2011 18:55:09

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

shadypierre a écrit:

Pas de probleme pour faire deux formulaires sur un meme controller, tu dois avoir un probleme au niveau du nommage de tes formulaires.

form d'authentification:
class Application_Form_Auth extends Zend_Form
{

    public function init()
    {
       
    }

   public function __construct($options = null)
{
    parent::__construct($options);
    $this->setName('auth');
   
$userid = new Zend_Form_Element_Text('userid');
    $userid->setLabel('Numero utilisateur: ')
              ->setRequired(true)
              ->addFilter('StripTags')
              ->setDecorators($decoratorElem);

    $password = new Zend_Form_Element_Password('password');
    $password->setLabel('Mot de Passe: ')
             ->setRequired(true)
             ->addFilter('StripTags')
             ->addFilter('StringTrim')
             ->setDecorators($decoratorElem);
     
    $verifier = new Zend_Form_Element_Submit('sendauth');
    $this->addElements(array($userid,$password,$verifier));

}
}

form d'inscription:

class Application_Form_Inscription extends Zend_Form
{
        public function init()
    {
    }
public function __construct($options = null)
{
   parent::__construct($options);
    $this->setName('user');
...................
$envoyeruser = new Zend_Form_Element_Submit('envoyer');
$this->addElements(array( $password, $firstname, $lastname,  $envoyeruser));

Dernière modification par wemalo (25-08-2011 19:49:00)

Hors ligne

 

#10 25-08-2011 19:13:06

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Théocrite a écrit:

Pourrais-tu donner le code de tes controlleurs et vues ?

Normalement tu peux en mettre 2 sur une même page sans problème...

contrôleur du formulaire d'authentification: '/AuthController/index'

class AuthController extends Zend_Controller_Action
{   

    public function indexAction()
    {
    $this->view->title = "Authentification";
    $this->view->headTitle($this->view->title, 'PREPEND');
    $form = new Application_Form_Auth();
    $form->sendauth->setLabel('Valider');
    $this->view->form = $form;
    if ($this->getRequest()->isPost()) {
    $formData = $this->getRequest()->getPost();
       if ($form->isValid($formData)) {
            if ($this->_process($form->getValues())) {
               $auth = Zend_Auth::getInstance();
                $a = $auth->getIdentity();
             $this->_helper->redirector('logout', 'auth');
     }
   }

contrôleur du formulaire d'inscription: '/InscriptionController/index'

public function indexAction()
    {
    $this->view->title = "Ajouter un nouveau utilisateur";
    $this->view->headTitle($this->view->title, 'PREPEND');
    $form = new Application_Form_Inscription();
    $form->envoyer->setLabel('Valider');
    $this->view->form = $form;
    if ($this->getRequest()->isPost()) {
    $formData = $this->getRequest()->getPost();   
    if  ($form->isValid($formData)) {
             
             $password = $form->getValue('password');
           //suite du traitement
}
}

vue d'authentification '/auth/index.phtml'
<?php echo $this->form; ?>

vue d'authentification '/inscription/index.phtml'
<?php echo $this->form; ?>

et pour intégrer les deux formulaire dans une seule page : '/index/index.phtml'
       <div class="auth">
            <?php echo $this->action("index", "auth"); ?>
        </div>
       
        <div class="inscription">
          <?php  echo $this->action("index", "inscription"); ?>
        </div>

Hors ligne

 

#11 25-08-2011 19:38:50

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Tu as utilisé un setAction sur tes forms ?

Hors ligne

 

#12 25-08-2011 20:53:51

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

j'ai ajouté:
$this->setAction('controlleur/action'); dans chacun des forms.
mais quand je clique sur le bouton d'envoi d'un formulaire, l'autre formulaire disparaitra de la page.

Dernière modification par wemalo (25-08-2011 20:59:51)

Hors ligne

 

#13 26-08-2011 09:13:48

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

En fait ici le setAction va t'envoyer sur l'action donnée. C'est là que tu es censé traiter la réponse donnée.

Ensuite en cas de problème, tu n'auras en effet que le formulaire en cours de traitement qui s'affichera.

Hors ligne

 

#14 26-08-2011 15:23:23

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Théocrite a écrit:

En fait ici le setAction va t'envoyer sur l'action donnée. C'est là que tu es censé traiter la réponse donnée.

Ensuite en cas de problème, tu n'auras en effet que le formulaire en cours de traitement qui s'affichera.

oui c'est vrai, mais après la validation du formulaire de la nouvelle page, l'erreur 'page not found' est afficher.

chemin de la page 'http://localhost/nom_projet/public/index.php/auth/auth/index' devienne non reconnu.

Hors ligne

 

#15 26-08-2011 15:29:36

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Oula il y a beaucoup de choses dans ton url...

La doc indique $form->setAction('/resource/process'), il manque donc probablement le premier / dans ton cas (supposition seulement).

Comment se fait-il que index.php soit écrit ? Pour afficher ton index, tu appelles http://localhost/nom_projet/public/index.php ?

Hors ligne

 

#16 26-08-2011 15:48:23

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

quand j'ajoute le premier slash, il m'affiche l'erreur suivant:

The requested URL /auth/index was not found on this server.

c'est pour cette raison que j'ai enlevé la premier /, je fait dans 'forms'     $this->setAction('auth/index').

Hors ligne

 

#17 26-08-2011 16:00:03

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Ah oui logique... Tu n'as pas de virtualhost qui pointe sur public donc en mettant le / apache cherche http://localhost/auth/index et non pas http://localhost/nom_projet/public/auth/index...

Pourrais-tu faire un Zend_Debug::dump($this->baseUrl()); dans ta vue. Si ça contient /nom_projet/public/, tu mets ton setAction dans le controlleur ($form->setAction($this->view->baseUrl().'/auth/index'))

Hors ligne

 

#18 26-08-2011 16:04:49

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Théocrite a écrit:

Comment se fait-il que index.php soit écrit ? Pour afficher ton index, tu appelles http://localhost/nom_projet/public/index.php ?

dès que j'exicute le projet, je trouve l'URL 'http://localhost/nom_projet/public/index.php'   dans la bare d'adresse.

Hors ligne

 

#19 26-08-2011 16:09:22

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Qu'appelles-tu exécuter le projet ? Tu ne fais pas une application classique là mais une application web... Donc l'exécution (l’interprétation du code PHP générant un html) se fait lorsque tu envois la requête dans ton navigateur.

De la façon dont tu dis ça, je comprends que tu fais "exécuter le projet" dans ton ide, et lui t'ouvres la config par défaut d'un projet php... Quel ide utilises-tu ?

Hors ligne

 

#20 26-08-2011 16:14:19

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

j'utilise Netbeans 7.0 comme IDE.

Hors ligne

 

#21 26-08-2011 16:19:22

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Théocrite a écrit:

Ah oui logique... Tu n'as pas de virtualhost qui pointe sur public donc en mettant le / apache cherche http://localhost/auth/index et non pas http://localhost/nom_projet/public/auth/index...

Pourrais-tu faire un Zend_Debug::dump($this->baseUrl()); dans ta vue. Si ça contient /nom_projet/public/, tu mets ton setAction dans le controlleur ($form->setAction($this->view->baseUrl().'/auth/index'))

Oui ça marche parfait mille merci.

ce que je retiens ici ce que c'est préférable d'utilisé une vitualHost n'est ce pas.

Hors ligne

 

#22 26-08-2011 18:18:27

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: [Résolu]integrer plusieurs formulaire dans une seule page

Oui c'est ce qu'il met arrivé et qu'il me la fait remarquer , je me suis cassé les dents, je n'ai pas utiliser le virtual host

Dernière modification par keokaz (26-08-2011 18:19:15)

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