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