Bonjour à tous,

Je me permet de poster car après une recherche j'ai trouvé des sujets similaires mais ne m'aidant pas trop pour mon cas.

Je dispose de deux formulaires sur la même page, lorsque l'on valide le premier, le deuxième aparait sur la même page, cependant j'aimerais effectuer une action suite au postage du second formulaire.

Je pensais que cela pourrait fonctioner avec un test de type if (isPost)
Malheureusement je n'y arrive pas il prend en compte le premier formulaire et rentre dans mon if (normal puisque je n'arrive pas à faire mon test sur le post du second formulaire).

Voila le code de ma page html :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Le client concerné est : <?php echo $this->concernes['NOMCLIENT']. " - " . $this->concernes['PRENOMCLIENT']?>
<?php echo $this->form;?>
 
<?php 
if ($this->conseillers != null && $this->concernes != null && $this->formations != null && $this->typeactes != null) {?>
	Récapitulatif :  
	<div>
	<div>Le conseiller <?php echo $this->conseillers['NOMCONSEILLER']. " " . $this->conseillers['PRENOMCONSEILLER']; ?> rédige un acte de type <?php echo $this->typeactes['LIBELLETYPEACTE']?>.</div>
	<div>Le client <?php echo $this->concernes['NOMCLIENT']. " " . $this->concernes['PRENOMCLIENT'];?> suivra la formation <?php echo $this->formations["LIBELLEFORMATION"]; ?> dans le centre <?php echo $this->centres["LIBELLECENTRE"];?></div>
	<div>Pour un montant total de : <?php echo $this->formations['TAUXHORAIREFORMATION'] * $this->formations['DUREEFORMATION'];?>€</div></div>
	<?php 
	echo $this->formulaire;
}
?>

Voila le code de mon controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
	public function ajouterAction(){
		$this->view->title = "Ajout d'actes";
	    $this->view->headTitle($this->view->title, 'PREPEND');
	    //commence par ici en récupérant l'id
	    // si on arrive pas a récupérer l'id on lui attribue la valeur 0
        $idClient = $this->_getParam('IDCLIENT', 0);
        if ($idClient == 0){
        	$this->_helper->redirector('acte');	
        }
 
        //objet client
        $clients = new Application_Model_DbTable_Client();
        $this->view->concernes = $clients->recupClient($idClient);
		//objet conseiller
	    $conseillers = new Application_Model_DbTable_Conseiller();
	    //objet centre
	    $centres = new Application_Model_DbTable_Centre();
	    //objet formation
	    $formations = new Application_Model_DbTable_Formation();
	    //objet typeacte
	    $typeActes = new Application_Model_DbTable_TypeActe();
	    //défini le numero du contrat et le place dans une variable
		$fic = APPLICATION_PATH .'/configs/numContrat.txt';
		$open = fopen($fic,"r");
		$numContrat = fgets($open)+1;
		//création d'un formulaire avec comme parametre le contenu de la table
	    $form = new Application_Form_Acte($conseillers->fetchAll()->toArray(),$centres->fetchAll()->toArray(),
	    								  $formations->fetchAll()->toArray(),$typeActes->fetchAll()->toArray());
	    $this->view->form = $form;
 
	    //si le formulaire est posté
	    if ($this->getRequest()->isPost()) {
	    	//alors on récupère ce qui à été posté
	        $formData = $this->getRequest()->getPost();
	        //et on vérifie que le formulaire est valide
	        if ($form->isValid($formData)) {
		    	$idConseiller = $form->getValue('IDCONSEILLER');
		    	$idCentre = $form->getValue('IDCENTRE');
		    	$idFormation = $form->getValue('IDFORMATION');
		    	$idTypeActe = $form->getValue('IDTYPEACTE');
	            $nbrFinanceur = $form->getValue('NBRFINANCEUR');
	            $valid = new Zend_Validate_Digits();
		        if ($valid->isValid($nbrFinanceur)){
			    	$formation = $formations->recupFormation($idFormation);
			    	$centre = $centres->recupCentre($idCentre);
					$this->view->formations = $formation;
					$this->view->centres = $centre;
					$this->view->conseillers = $conseillers->recupConseiller($idConseiller);
					$this->view->typeactes = $typeActes->recupTypeActe($idTypeActe);
					//$typeActes->recupTypeActe($idTypeActe);
					//$form->Ajouter->setLabel('Suivant');
					$financeurs = new Application_Model_DbTable_Financeur();
				    // on passe à la suite du formulaire
 					$form2 = new Application_Form_Acte2($financeurs->fetchAll()->toArray(),$nbrFinanceur);
					//$this->view->form = $form2;
					$this->view->formulaire = $form2;
					$i=0;
		        } else {
		        	echo "pas ok";
		        }
	        }
	    } else {
	    //	$form->populate($formData);
	    }
	}
Voila le code de mon premier formulaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
class Application_Form_Acte extends Zend_Form
{
    public function __construct($conseillers = null,$centres = null,$formations = null,$typeActes = null)
    {
        parent::__construct($conseillers,$centres,$formations,$typeActes);
 
        $this->setName('acte');
        $id = new Zend_Form_Element_Hidden('IDACTE');
 
        $conseiller = new Zend_Form_Element_Select('IDCONSEILLER');
        $conseiller->setLabel('Conseiller qui rédige cet acte : ')
        		->setRequired(true)
        		->addMultiOption(0,"Veuillez choisir un conseiller");
        //liste tous ce qu'on récupère de la table	
    	$i = 0;
    	foreach ($conseillers as $cons[]){
			$conseiller->addMultiOption($cons[$i]['IDCONSEILLER'], $cons[$i]['NOMCONSEILLER']." ".$cons[$i]['PRENOMCONSEILLER']);	
			$i = $i +1;
		}
        $centre = new Zend_Form_Element_Select('IDCENTRE');
        $centre->setLabel('Centre dans lequel se déroule la formation: ')
        		->setRequired(true)
        		->addMultiOption(0,"Veuillez choisir un centre");
        //liste tous ce qu'on récupère de la table	
    	$i = 0;
    	foreach ($centres as $centr[]){
			$centre->addMultiOption($centr[$i]['IDCENTRE'], $centr[$i]['LIBELLECENTRE']);	
			$i = $i +1;
		}
 
		$formation = new Zend_Form_Element_Select('IDFORMATION');
        $formation->setLabel('Formation suivie: ')
        		->setRequired(true)
        		->addMultiOption(0,"Veuillez choisir une formation");
        //liste tous ce qu'on récupère de la table	
    	$i = 0;
    	foreach ($formations as $forma[]){
			$formation->addMultiOption($forma[$i]['IDFORMATION'], $forma[$i]['LIBELLEFORMATION']);	
			$i = $i +1;
		}
 
    	$typeActe = new Zend_Form_Element_Select('IDTYPEACTE');
        $typeActe->setLabel("L'acte est un : ")
        		->setRequired(true)
        		->addMultiOption(0,"Veuillez choisir un type d'acte");
        //liste tous ce qu'on récupère de la table	
    	$i = 0;
    	foreach ($typeActes as $typ[]){
			$typeActe->addMultiOption($typ[$i]['IDTYPEACTE'], $typ[$i]['LIBELLETYPEACTE']);	
			$i = $i +1;
		}
		$nbrFinanceur = new Zend_Form_Element_Text('NBRFINANCEUR');
		$nbrFinanceur->setLabel("Nombre de financeurs")
					// le champs est obligatoire
					->setRequired(true)
					// supprime le HTML non désiré
	                ->addFilter('StripTags')
	                // supprime les espaces 
	                ->addFilter('StringTrim')
	                //on interdit les saisis vides
	                ->addValidator('NotEmpty');
        $envoyer = new Zend_Form_Element_Submit('Suivant');
        $envoyer->setAttrib('IDACTE', 'boutonrechercher');
        $this->addElements(array($id,$conseiller,$centre,$formation,$typeActe,$nbrFinanceur,$envoyer));
	}
}
Voila le code de mon second formulaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
class Application_Form_Acte2 extends Zend_Form
{
    public function __construct($financeurs = null, $nbrFinanceur = null)
    {
        parent::__construct($financeurs,$nbrFinanceur);
 
        $this->setName('acte2');
        $j=0;
		while ($j < $nbrFinanceur){
	        $id = new Zend_Form_Element_Hidden('IDACTE'.$j);
	 		$financeur = new Zend_Form_Element_Select('IDFINANCEUR'.$j);
	        $financeur->setLabel("Financeur : ")
	        		->setRequired(true)
	        		->addMultiOption(0,"Veuillez choisir un financeur");
	        //liste tous ce qu'on récupère de la table	
	   		$i = 0;
	    	foreach ($financeurs as $finan[]){
				$financeur->addMultiOption($finan[$i]['IDFINANCEUR'], $finan[$i]['LIBELLEFINANCEUR']);	
				$i = $i +1;
			}
			$financement = new Zend_Form_Element_Text("MONTANTFINANCEMENT".$j);
	        $financement->setLabel('Participation : ')
	        		// le champs n'est pas obligatoire
	                ->setRequired(true)
	                // supprime le HTML non désiré
	                ->addFilter('StripTags')
	                // supprime les espaces 
	                ->addFilter('StringTrim')
	                //on interdit les saisis vides
	                ->addValidator('NotEmpty');
 
 
	        $j = $j+1;
	      	$this->addElements(array($id,$financeur,$financement));
	      	$totalFinance[] = $financement->getValue('MONTANTFINANCEMENT'.$j);
		}
		$envoyer = new Zend_Form_Element_Submit('Ajouter');
	    $envoyer->setAttrib('IDACTE', 'boutonrechercher');
	   	$calculer = new Zend_Form_Element_Button('Calculer');
	    $calculer->setAttrib('calculer', 'boutoncalculer');
        $this->addElements(array($envoyer,$calculer));
	}
}