3 namespace Galerie\Controller;
5 use Zend\Mvc\Controller\AbstractActionController;
6 use Zend\View\Model\ViewModel;
7 use Zend\View\Model\JsonModel;
9 use Galerie\Model\Galerie;
11 class IndexController extends AbstractActionController
14 private $_galerieTable;
15 private $_galerieInfoTable;
16 private $_galerieForm;
21 private function _getGalerieTable()
23 if (!$this->_galerieTable) {
24 $sm = $this->getServiceLocator();
25 $this->_galerieTable = $sm->get('Galerie\Model\GalerieTable');
27 return $this->_galerieTable;
30 private function _getGalerieInfoTable()
32 if (!$this->_galerieInfoTable) {
33 $sm = $this->getServiceLocator();
34 $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable');
36 return $this->_galerieInfoTable;
39 private function _getTranslator()
41 if (!$this->_translator) {
42 $sm = $this->getServiceLocator();
43 $this->_translator = $sm->get('translator');
45 return $this->_translator;
48 private function _getGalerieForm()
50 if (!$this->_galerieForm) {
51 $sm = $this->getServiceLocator();
52 $this->_galerieForm = $sm->get('Galerie\Form\GalerieForm');
54 return $this->_galerieForm;
59 public function indexAction()
61 return new ViewModel($this->MessageGetter());
64 public function csvAction() {
65 // Récupération des informations brutes
66 $modelManager = $this->_getGalerieInfoTable();
67 $datas = $modelManager->all();
69 // Mise en forme des résultats
70 $content = array($modelManager->csvHeader());
71 foreach($datas as $d) {
72 $content[] = $d->csvFormat();
75 // Création de la réponse
76 $response = $this->getResponse();
77 $response->setStatusCode(200);
79 $headers = $this->getResponse()->getHeaders();
80 $headers->addHeaderLine('Content-Type', 'text/csv; charset=utf-8');
81 $headers->addHeaderLine('Content-Disposition', 'attachment; filename="export_galerie.csv"');
84 $response->setContent(implode("\r\n", $content));
88 public function listAction()
90 // Récupération de l'objet requête
91 $request = $this->getRequest();
93 $start = $request->getQuery('iDisplayStart', 0);
94 $length = $request->getQuery('iDisplayLength', 10);
95 $tri = $request->getQuery('iSortCol_0');
96 $senstri = $request->getQuery('sSortDir_0', 'asc');
97 $filtre = $request->getQuery('sSearch');
99 // Preparation pour le requêtage
100 $modelManager = $this->_getGalerieInfoTable();
102 // Récupération des galeries sous la forme d'un tableau d'entités
103 $galeries = $modelManager->getPartial($start, $length, $tri, $senstri, $filtre);
105 // Préparation pour la mise en forme du résultat
106 $action_template = '<a href="%s">%s</a><a href="%s">%s</a><a href="%s">%s</a>';
107 $translator = $this->_getTranslator();
108 $action_voir = $translator->translate('Galerie_index_table_lien_view', 'galerie');
109 $action_editer = $translator->translate('Galerie_index_table_lien_edit', 'galerie');
110 $action_supprimer = $translator->translate('Galerie_index_table_lien_del', 'galerie');
112 // Mise en forme du résultat pour que cela corresponde à l'attendu, c'est à dire un tableau de tableaux
114 foreach($galeries as $g) {
116 "<strong>{$g->name}</strong><em>{$g->description}</em>",
121 $url->fromRoute('galerie/view', array('id' => $g->id)),
123 $url->fromRoute('galerie/edit', array('id' => $g->id)),
125 $url->fromRoute('galerie/del', array('id' => $g->id)),
131 // Construction du resultat
132 return new JsonModel(array(
133 "sEcho" => $request->getQuery('sEcho', 1),
134 "iTotalRecords" => $modelManager->count_all(),
135 "iTotalDisplayRecords" => count($result),
140 public function editAction()
142 // Création du formulaire
143 $form = $this->_getGalerieForm();
145 // Récupération de l'objet de travail
146 $id = $this->params()->fromRoute('id', null);
150 $galerie = $this->_getGalerieTable()->any(array('id' => $id));
153 // Sommes-nous en ajout ou en édition ?
155 // Nous sommes en ajout
156 $form->get('submit')->setValue('Ajouter');
157 // Il faut créer un nouveau objet Galerie
158 $galerie = new Galerie;
159 // Garder cette information pour la vue
162 // Nous sommes en modification
163 $form->get('submit')->setValue('Modifier');
164 // Il faut préremplir le formulaire avec les données actuelles
165 $form->bind($galerie);
166 // Garder cette information pour la vue
170 // Récupération de l'objet requête
171 $request = $this->getRequest();
172 if ($request->isPost()) {
173 // Mise en place pour la validation du formulaire
174 $form->setInputFilter($galerie->getInputFilter());
175 $form->setData($request->getPost());
177 // Validation des données
178 if ($form->isValid()) {
179 // Sauvegarde des données
180 $galerie = $form->getData();
182 // Si l'objet n'est pas nouveau, les autres paramètres restent inchangés
183 // Si l'objet est nouveau, il faut renseigner l'id de l'utilisateur courant
184 $galerie->id_user = 1; //TODO: Mettre ici le user connecté
186 $this->_getGalerieTable()->save($galerie);
188 $translator = $this->_getTranslator();
189 $messenger = $this->flashMessenger();
190 $messenger->setNamespace('infos');
192 $messenger->addMessage($translator->translate('Galerie_added', 'galerie'));
194 $messenger->addMessage($translator->translate('Galerie_updated', 'galerie'));
196 // Redirection à l'ancienne mode
197 //return $this->redirect()->toRoute('galerie');
198 // Redirection vers le contrôleur courant
199 //return $this->postRedirectGet();
200 // Redirection vers la page Galerie/Index
201 return $this->postRedirectGet('galerie');
205 // On prépare l'affichage du formulaire
207 $form->setAttribute('action', $this->url()->fromRoute('galerie/add'));
209 $form->setAttribute('action', $this->url()->fromRoute('galerie/edit', array('id' => $id)));
213 // On passe la main à la vue
214 return new ViewModel(array(
221 public function delAction()
223 return $this->redirect()->toRoute('galerie/view', array(
224 'id' => $this->params()->fromRoute('id', null),
228 public function viewAction()
230 $id = $this->params()->fromRoute('id', null);
231 $galerie = $this->_getGalerieInfoTable()->any($id);
232 return new ViewModel(array(
234 'galerie' => $galerie,