use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
+use Zend\View\Model\JsonModel;
use Galerie\Model\Galerie;
-use Galerie\Form\GalerieForm;
class IndexController extends AbstractActionController
{
private $_galerieTable;
private $_galerieInfoTable;
+ private $_galerieForm;
+
+ private $_translator;
private function _getGalerieTable()
return $this->_galerieInfoTable;
}
+ private function _getTranslator()
+ {
+ if (!$this->_translator) {
+ $sm = $this->getServiceLocator();
+ $this->_translator = $sm->get('translator');
+ }
+ return $this->_translator;
+ }
+
+ private function _getGalerieForm()
+ {
+ if (!$this->_galerieForm) {
+ $sm = $this->getServiceLocator();
+ $this->_galerieForm = $sm->get('Galerie\Form\GalerieForm');
+ }
+ return $this->_galerieForm;
+ }
+
+
public function indexAction()
+ {
+ return new ViewModel($this->MessageGetter());
+ }
+
+ public function listAction()
{
- return new ViewModel(array(
- 'galeries' => $this->_getGalerieInfoTable()->all(),
- ));
+ // Récupération de l'objet requête
+ $request = $this->getRequest();
+
+ $start = $request->getQuery('iDisplayStart', 0);
+ $length = $request->getQuery('iDisplayLength', 10);
+ $tri = $request->getQuery('iSortCol_0');
+ $senstri = $request->getQuery('sSortDir_0', 'asc');
+ $filtre = $request->getQuery('sSearch');
+
+ // Preparation pour le requêtage
+ $modelManager = $this->_getGalerieInfoTable();
+
+ // Récupération des galeries sous la forme d'un tableau d'entités
+ $galeries = $modelManager->getPartial($start, $length, $tri, $senstri, $filtre);
+
+ // Préparation pour la mise en forme du résultat
+ $action_template = '<a href="%s">%s</a><a href="%s">%s</a><a href="%s">%s</a>';
+ $translator = $this->_getTranslator();
+ $action_voir = $translator->translate('Galerie_index_table_lien_view', 'galerie');
+ $action_editer = $translator->translate('Galerie_index_table_lien_edit', 'galerie');
+ $action_supprimer = $translator->translate('Galerie_index_table_lien_del', 'galerie');
+ $url = $this->url();
+ // Mise en forme du résultat pour que cela corresponde à l'attendu, c'est à dire un tableau de tableaux
+ $result = array();
+ foreach($galeries as $g) {
+ $result[] = array(
+ "<strong>{$g->name}</strong><em>{$g->description}</em>",
+ $g->username,
+ $g->nb,
+ sprintf(
+ $action_template,
+ $url->fromRoute('galerie/view', array('id' => $g->id)),
+ $action_voir,
+ $url->fromRoute('galerie/edit', array('id' => $g->id)),
+ $action_editer,
+ $url->fromRoute('galerie/del', array('id' => $g->id)),
+ $action_supprimer
+ ),
+ );
+ }
+
+ // Construction du resultat
+ return new JsonModel(array(
+ "sEcho" => $request->getQuery('sEcho', 1),
+ "iTotalRecords" => $modelManager->count_all(),
+ "iTotalDisplayRecords" => count($result),
+ "aaData" => $result,
+ ));
}
public function editAction()
{
// Création du formulaire
- $form = new GalerieForm;
+ $form = $this->_getGalerieForm();
// Récupération de l'objet de travail
$id = $this->params()->fromRoute('id', null);
}
$this->_getGalerieTable()->save($galerie);
- // Redirection
- return $this->redirect()->toRoute('galerie');
+ $translator = $this->_getTranslator();
+ $messenger = $this->flashMessenger();
+ $messenger->setNamespace('infos');
+ if ($is_new) {
+ $messenger->addMessage($translator->translate('Galerie_added', 'galerie'));
+ } else {
+ $messenger->addMessage($translator->translate('Galerie_updated', 'galerie'));
+ }
+ // Redirection à l'ancienne mode
+ //return $this->redirect()->toRoute('galerie');
+ // Redirection vers le contrôleur courant
+ //return $this->postRedirectGet();
+ // Redirection vers la page Galerie/Index
+ return $this->postRedirectGet('galerie');
}
}