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());
64 public function listAction()
66 // Récupération de l'objet requête
67 $request = $this->getRequest();
69 $start = $request->getQuery('iDisplayStart', 0);
70 $length = $request->getQuery('iDisplayLength', 10);
71 $tri = $request->getQuery('iSortCol_0');
72 $senstri = $request->getQuery('sSortDir_0', 'asc');
73 $filtre = $request->getQuery('sSearch');
75 // Preparation pour le requêtage
76 $modelManager = $this->_getGalerieInfoTable();
78 // Récupération des galeries sous la forme d'un tableau d'entités
79 $galeries = $modelManager->getPartial($start, $length, $tri, $senstri, $filtre);
81 // Préparation pour la mise en forme du résultat
82 $action_template = '<a href="%s">%s</a><a href="%s">%s</a><a href="%s">%s</a>';
83 $translator = $this->_getTranslator();
84 $action_voir = $translator->translate('Galerie_index_table_lien_view', 'galerie');
85 $action_editer = $translator->translate('Galerie_index_table_lien_edit', 'galerie');
86 $action_supprimer = $translator->translate('Galerie_index_table_lien_del', 'galerie');
88 // Mise en forme du résultat pour que cela corresponde à l'attendu, c'est à dire un tableau de tableaux
90 foreach($galeries as $g) {
92 "<strong>{$g->name}</strong><em>{$g->description}</em>",
97 $url->fromRoute('galerie/view', array('id' => $g->id)),
99 $url->fromRoute('galerie/edit', array('id' => $g->id)),
101 $url->fromRoute('galerie/del', array('id' => $g->id)),
107 // Construction du resultat
108 return new JsonModel(array(
109 "sEcho" => $request->getQuery('sEcho', 1),
110 "iTotalRecords" => $modelManager->count_all(),
111 "iTotalDisplayRecords" => count($result),
116 public function editAction()
118 // Création du formulaire
119 $form = $this->_getGalerieForm();
121 // Récupération de l'objet de travail
122 $id = $this->params()->fromRoute('id', null);
126 $galerie = $this->_getGalerieTable()->any(array('id' => $id));
129 // Sommes-nous en ajout ou en édition ?
131 // Nous sommes en ajout
132 $form->get('submit')->setValue('Ajouter');
133 // Il faut créer un nouveau objet Galerie
134 $galerie = new Galerie;
135 // Garder cette information pour la vue
138 // Nous sommes en modification
139 $form->get('submit')->setValue('Modifier');
140 // Il faut préremplir le formulaire avec les données actuelles
141 $form->bind($galerie);
142 // Garder cette information pour la vue
146 // Récupération de l'objet requête
147 $request = $this->getRequest();
148 if ($request->isPost()) {
149 // Mise en place pour la validation du formulaire
150 $form->setInputFilter($galerie->getInputFilter());
151 $form->setData($request->getPost());
153 // Validation des données
154 if ($form->isValid()) {
155 // Sauvegarde des données
156 $galerie = $form->getData();
158 // Si l'objet n'est pas nouveau, les autres paramètres restent inchangés
159 // Si l'objet est nouveau, il faut renseigner l'id de l'utilisateur courant
160 $galerie->id_user = 1; //TODO: Mettre ici le user connecté
162 $this->_getGalerieTable()->save($galerie);
164 // Redirection à l'ancienne mode
165 //return $this->redirect()->toRoute('galerie');
166 // Redirection vers le contrôleur courant
167 //return $this->postRedirectGet();
168 // Redirection vers la page Galerie/Index
169 return $this->postRedirectGet('galerie');
173 // On prépare l'affichage du formulaire
175 $form->setAttribute('action', $this->url()->fromRoute('galerie/add'));
177 $form->setAttribute('action', $this->url()->fromRoute('galerie/edit', array('id' => $id)));
181 // On passe la main à la vue
182 return new ViewModel(array(
189 public function delAction()
191 return $this->redirect()->toRoute('galerie/view', array(
192 'id' => $this->params()->fromRoute('id', null),
196 public function viewAction()
198 $id = $this->params()->fromRoute('id', null);
199 $galerie = $this->_getGalerieInfoTable()->any($id);
200 return new ViewModel(array(
202 'galerie' => $galerie,