78aa858ed813c2bfa5fcfa861dd26a87204ad53e
[zf2.biz/galerie.git] / module / Galerie / src / Galerie / Controller / IndexController.php
1 <?php
2
3 namespace Galerie\Controller; 
4
5 use Zend\Mvc\Controller\AbstractActionController; 
6 use Zend\View\Model\ViewModel;
7
8 use Galerie\Model\Galerie;
9 use Galerie\Form\GalerieForm;
10
11 class IndexController extends AbstractActionController 
12 {
13
14     private $_galerieTable;
15     private $_galerieInfoTable;
16
17
18     private function _getGalerieTable()
19     {
20         if (!$this->_galerieTable) {
21             $sm = $this->getServiceLocator();
22             $this->_galerieTable = $sm->get('Galerie\Model\GalerieTable');
23         }
24         return $this->_galerieTable;
25     }
26
27     private function _getGalerieInfoTable()
28     {
29         if (!$this->_galerieInfoTable) {
30             $sm = $this->getServiceLocator();
31             $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable');
32         }
33         return $this->_galerieInfoTable;
34     }
35
36
37     public function indexAction() 
38     { 
39         return new ViewModel(array(
40             'galeries' => $this->_getGalerieInfoTable()->all(),
41         )); 
42     } 
43
44     public function editAction() 
45     {
46         // Création du formulaire
47         $form = new GalerieForm;
48
49         // Récupération de l'objet de travail
50         $id = $this->params()->fromRoute('id', null);
51         if (!$id) {
52             $galerie = null;
53         } else {
54             $galerie = $this->_getGalerieTable()->any(array('id' => $id));
55         }
56
57         // Sommes-nous en ajout ou en édition ?
58         if (!$galerie) {
59             // Nous sommes en ajout
60             $form->get('submit')->setValue('Ajouter');
61             // Il faut créer un nouveau objet Galerie
62             $galerie = new Galerie;
63             // Garder cette information pour la vue
64             $is_new = true;
65         } else {
66             // Nous sommes en modification
67             $form->get('submit')->setValue('Modifier');
68             // Il faut préremplir le formulaire avec les données actuelles
69             $form->bind($galerie);
70             // Garder cette information pour la vue
71             $is_new = false;
72         }
73
74         // Récupération de l'objet requête
75         $request = $this->getRequest();
76         if ($request->isPost()) {
77             // Mise en place pour la validation du formulaire
78             $form->setInputFilter($galerie->getInputFilter());
79             $form->setData($request->getPost());
80
81             // Validation des données
82             if ($form->isValid()) {
83                 // Sauvegarde des données
84                 $galerie = $form->getData();
85                 if ($is_new) {
86                     // Si l'objet n'est pas nouveau, les autres paramètres restent inchangés
87                     // Si l'objet est nouveau, il faut renseigner l'id de l'utilisateur courant
88                     $galerie->id_user = 1; //TODO: Mettre ici le user connecté
89                 }
90                 $this->_getGalerieTable()->save($galerie);
91
92                 // Redirection 
93                 return $this->redirect()->toRoute('galerie');
94             }
95         }
96
97         // On prépare l'affichage du formulaire
98         if ($is_new) {
99             $form->setAttribute('action', $this->url()->fromRoute('galerie/add'));
100         } else {
101             $form->setAttribute('action', $this->url()->fromRoute('galerie/edit', array('id' => $id)));
102         }
103         $form->prepare();
104
105         // On passe la main à la vue
106         return new ViewModel(array(
107             'id' => $id,
108             'form' => $form,
109             'is_new' => $is_new,
110         ));
111     } 
112
113     public function delAction() 
114     { 
115         return $this->redirect()->toRoute('galerie/view', array(
116             'id' => $this->params()->fromRoute('id', null),
117         ));
118     } 
119
120     public function viewAction() 
121     {
122         $id = $this->params()->fromRoute('id', null);
123         $galerie = $this->_getGalerieInfoTable()->any($id);
124         return new ViewModel(array(
125             'id' => $id,
126             'galerie' => $galerie,
127         ));
128     } 
129
130