Bonjour,
Soit une vue montrant le contenu d'une table composée simplement d'un identifiant et d'un nom. La vue affiche un tableau avec une colonne Nom et une colonne où se trouvent les actions Modifier et Supprimer, comme dans le tutoriel "Débuter avec Zend Framework, approche MVC".
Mais comme il n'y a qu'une seule colonne à alimenter lorsqu'on ajoute ou modifie une donnée, je trouve ça un peu lourd de créer un écran spécialement pour ça.
J'ai créé un formulaire tout simple muni d'un Zend_Form_Element_Text et d'un bouton que j'arrive à afficher dans le même écran que le tableau de données.
Mais comment gérer les actions ajouter et modifier ?
J'ai essayé ce qui suit...
Le formulaire :
La vue :
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 class Application_Form_Discipline extends Zend_Form { public function init() { $baseurl = Zend_Controller_Front::getInstance()->getBaseUrl(); $this->setName('discipline'); $this->setMethod('post'); // Nom de l'étudiant $dsc_nom = new Zend_Form_Element_Text('dsc_nom'); $dsc_nom->setLabel('Nom de la discipline') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim'); // Bouton Envoyer $envoyer = new Zend_Form_Element_Submit('envoyer'); $envoyer->setLabel('Enregistrer'); $this->addElements(array($dsc_nom, $envoyer)); } }
Le contrôleur :
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 <?php $this->headTitle('Gérer disciplines'); ?> <a href="<?php echo $this->url(array('controller' => 'accueilgestionnaire', 'action' => 'index')); ?>">Retour à l'accueil gestionnaire</a> <?php if($this->action == 'index') : ?> <a href="<?php echo $this->url(array('controller' => 'gererdisciplines', 'action' => 'ajouter')); ?>">Ajouter une discipline</a> <?php else : ?> <?php echo $this->form; ?> <?php endif; ?> <table> <tr> <th>Nom de la discipline</th> <th> </th> </tr> <?php foreach($this->disciplines as $discipline) : ?> <tr> <td><?php echo $this->escape($discipline->dsc_nom);?></td> <td> <a href="<?php echo $this->url(array('controller'=>'gererdisciplines', 'action'=>'modifier', 'id'=>$discipline->dsc_id));?>">Modifier</a> <a href="<?php echo $this->url(array('controller'=>'gererdisciplines', 'action'=>'supprimer', 'id'=>$discipline->dsc_id));?>">Supprimer</a> </td> </tr> <?php endforeach; ?> </table>
Lorsque j'arrive sur la vue index, le lien "Ajouter une discipline" s'affiche, c'est bon. Mais si je clique sur le lien, il cherche la vue ajouter.phtml.
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 class GererDisciplinesController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { $this->view->title = "Gérer les disciplines d'enseignement"; $disciplines = new Application_Model_DbTable_Discipline(); $this->view->disciplines = $disciplines->fetchAll(); $this->view->action = 'index'; $form = new Application_Form_Discipline(); $this->view->form = $form; } public function ajouterAction() { $this->view->action = 'ajouter'; $form = new Application_Form_Discipline(); if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $dsc_nom = $form->getValue('dsc_nom'); $discipline = new Application_Model_DbTable_Discipline(); $dsc_id = $discipline->ajouterDiscipline($dsc_nom); } else { $form->populate($formData); } } } }
Que faut-il faire pour lui dire de rester dans la même vue index ?Message: script 'gererdisciplines/ajouter.phtml' not found in path (/var/www/html/stagmas/application/views/scripts/)
Partager