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(array(
62 'messages' => $this->flashMessenger()->getMessages(),
66 public function listAction()
68 // Récupération de l'objet requête
69 $request = $this->getRequest();
71 $start = $request->getQuery('iDisplayStart', 0);
72 $length = $request->getQuery('iDisplayLength', 10);
73 $tri = $request->getQuery('iSortCol_0');
74 $senstri = $request->getQuery('sSortDir_0', 'asc');
75 $filtre = $request->getQuery('sSearch');
77 // Preparation pour le requêtage
78 $modelManager = $this->_getGalerieInfoTable();
80 // Récupération des galeries sous la forme d'un tableau d'entités
81 $galeries = $modelManager->getPartial($start, $length, $tri, $senstri, $filtre);
83 // Préparation pour la mise en forme du résultat
84 $action_template = '<a href="%s">%s</a><a href="%s">%s</a><a href="%s">%s</a>';
85 $translator = $this->_getTranslator();
86 $action_voir = $translator->translate('Galerie_index_table_lien_view', 'galerie');
87 $action_editer = $translator->translate('Galerie_index_table_lien_edit', 'galerie');
88 $action_supprimer = $translator->translate('Galerie_index_table_lien_del', 'galerie');
90 // Mise en forme du résultat pour que cela corresponde à l'attendu, c'est à dire un tableau de tableaux
92 foreach($galeries as $g) {
94 "<strong>{$g->name}</strong><em>{$g->description}</em>",
99 $url->fromRoute('galerie/view', array('id' => $g->id)),
101 $url->fromRoute('galerie/edit', array('id' => $g->id)),
103 $url->fromRoute('galerie/del', array('id' => $g->id)),
109 // Construction du resultat
110 return new JsonModel(array(
111 "sEcho" => $request->getQuery('sEcho', 1),
112 "iTotalRecords" => $modelManager->count_all(),
113 "iTotalDisplayRecords" => count($result),
118 public function editAction()
120 // Création du formulaire
121 $form = $this->_getGalerieForm();
123 // Récupération de l'objet de travail
124 $id = $this->params()->fromRoute('id', null);
128 $galerie = $this->_getGalerieTable()->any(array('id' => $id));
131 // Sommes-nous en ajout ou en édition ?
133 // Nous sommes en ajout
134 $form->get('submit')->setValue('Ajouter');
135 // Il faut créer un nouveau objet Galerie
136 $galerie = new Galerie;
137 // Garder cette information pour la vue
140 // Nous sommes en modification
141 $form->get('submit')->setValue('Modifier');
142 // Il faut préremplir le formulaire avec les données actuelles
143 $form->bind($galerie);
144 // Garder cette information pour la vue
148 // Récupération de l'objet requête
149 $request = $this->getRequest();
150 if ($request->isPost()) {
151 // Mise en place pour la validation du formulaire
152 $form->setInputFilter($galerie->getInputFilter());
153 $form->setData($request->getPost());
155 // Validation des données
156 if ($form->isValid()) {
157 // Sauvegarde des données
158 $galerie = $form->getData();
160 // Si l'objet n'est pas nouveau, les autres paramètres restent inchangés
161 // Si l'objet est nouveau, il faut renseigner l'id de l'utilisateur courant
162 $galerie->id_user = 1; //TODO: Mettre ici le user connecté
164 $this->_getGalerieTable()->save($galerie);
166 $translator = $this->_getTranslator();
168 $this->flashMessenger()->addMessage($translator->translate('Galerie_added', 'galerie'));
170 $this->flashMessenger()->addMessage($translator->translate('Galerie_updated', 'galerie'));
172 // Redirection à l'ancienne mode
173 //return $this->redirect()->toRoute('galerie');
174 // Redirection vers le contrôleur courant
175 //return $this->postRedirectGet();
176 // Redirection vers la page Galerie/Index
177 return $this->postRedirectGet('galerie');
181 // On prépare l'affichage du formulaire
183 $form->setAttribute('action', $this->url()->fromRoute('galerie/add'));
185 $form->setAttribute('action', $this->url()->fromRoute('galerie/edit', array('id' => $id)));
189 // On passe la main à la vue
190 return new ViewModel(array(
197 public function delAction()
199 return $this->redirect()->toRoute('galerie/view', array(
200 'id' => $this->params()->fromRoute('id', null),
204 public function viewAction()
206 $id = $this->params()->fromRoute('id', null);
207 $galerie = $this->_getGalerieInfoTable()->any($id);
208 return new ViewModel(array(
210 'galerie' => $galerie,