Bonjour,
J'ai aujourd'hui un formulaire d'ajout d'un pays dans ma BDD et qui fonctionne.
J'ai aussi un formulaire d'ajout d'une ville, lequel contient une liste des pays déjà enregistrés. On choisit le pays, l'identifiant du pays est bien enregistré avec la ville dans la BDD.
Maintenant, j'ai ajouté un lien vers le formulaire d'ajout du pays dans le formulaire d'ajout de la ville, de manière à pouvoir ajouter un pays à la liste des pays déjà enregistrés.
Ce lien fonctionne, le formulaire d'ajout du pays s'ouvre, je peux enregistrer un pays.
Mais je fais comment pour revenir automatiquement au formulaire d'ajout de la ville avec ce pays nouvellement créé ajouté à la liste et automatiquement sélectionné ?
Un peu de code pour comprendre ?
FormulaireVille :
Le setValue(1) c'est pour fixer la valeur par défaut à France.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // =============== Pays de la ville ======================== $pays = new Pays; $liste_pays = $pays->fetchAll($pays->select()->order('pay_nom_francais')); $tab_pays = array(); foreach($liste_pays as $un_pays) { $tab_pays[$un_pays->pay_id] = $un_pays->pay_nom_francais; } $sel_pays = new Zend_Form_Element_Select('vil_pays_id'); $sel_pays ->setLabel('Pays') ->setMultiOptions($tab_pays) ->setValue(1);
Script de vue ajouter.phtml :
Contrôleur PaysController (classique) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // =============== Pays de la ville ======================== $pays = new Pays; $liste_pays = $pays->fetchAll($pays->select()->order('pay_nom_francais')); $tab_pays = array(); foreach($liste_pays as $un_pays) { $tab_pays[$un_pays->pay_id] = $un_pays->pay_nom_francais; } $sel_pays = new Zend_Form_Element_Select('vil_pays_id'); $sel_pays ->setLabel('Pays') ->setMultiOptions($tab_pays) ->setValue(1);
J'imagine que ça doit se passer du côté de :
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 function ajouterAction() { $this->view->title = "Ajouter un pays"; $form = new FormulairePays(); $form->submit->setLabel('Ajouter'); $this->view->form = $form; if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $pays = new Pays(); $row = $pays->createRow(); $row->pay_nom_francais = $form->getValue('pay_nom_francais'); $row->pay_nationalite_masc = $form->getValue('pay_nationalite_masc'); $row->pay_nationalite_fem = $form->getValue('pay_nationalite_fem'); $row->pay_code = $form->getValue('pay_code'); if($form->getValue('pay_commentaire') != '') { $row->pay_commentaire = $form->getValue('pay_commentaire'); } $row->save(); $this->_redirect('/'); } else { $form->populate($formData); } } }
En mettant une condition sur la cause de l'ouverture du formulaire peut-être ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->_redirect('/');
Mais comment passer cette condition ou la récupérer du formulaire ville ?
EDIT :
J'ai réussi à rediriger vers le formulaire d'ajout de la ville.
J'ai ajouté un paramètre à PaysController/ajouterAction et j'ai mis la condition pour rediriger :
Mais je ne vois vraiment pas comment garder ce qui a déjà été saisi dans le formulaire d'ajout de la ville (nom français, nom original) ni lui retourner l'id du pays ajouté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function ajouterAction($origine = null) { ... if ($origine = 'ville') { $this->_redirect('/ville/ajouter'); } else { $this->_redirect('/'); }
Partager