X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=module%2FGalerie%2Fsrc%2FGalerie%2FController%2FIndexController.php;h=0219600844c46e73fab27b0c58c359198c59f8f8;hb=7146e4cfb9136106487215e502284af689e5fe7e;hp=48b3b61b68d02859d25232eb61693614cad2e0cf;hpb=82ecfb3e24417c3f3b37bad291715260b63ed9fb;p=zf2.biz%2Fgalerie.git diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index 48b3b61..0219600 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -3,27 +3,149 @@ namespace Galerie\Controller; use Zend\Mvc\Controller\AbstractActionController; +use Zend\View\Model\ViewModel; +use Galerie\Model\Galerie; class IndexController extends AbstractActionController -{ +{ + + private $_galerieTable; + private $_galerieInfoTable; + private $_galerieForm; + + private $_translator; + + + private function _getGalerieTable() + { + if (!$this->_galerieTable) { + $sm = $this->getServiceLocator(); + $this->_galerieTable = $sm->get('Galerie\Model\GalerieTable'); + } + return $this->_galerieTable; + } + + private function _getGalerieInfoTable() + { + if (!$this->_galerieInfoTable) { + $sm = $this->getServiceLocator(); + $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable'); + } + 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 array(); + return new ViewModel(array( + 'galeries' => $this->_getGalerieInfoTable()->all(), + )); } public function editAction() - { - return array(); + { + // Création du formulaire + $form = $this->_getGalerieForm(); + + // Récupération de l'objet de travail + $id = $this->params()->fromRoute('id', null); + if (!$id) { + $galerie = null; + } else { + $galerie = $this->_getGalerieTable()->any(array('id' => $id)); + } + + // Sommes-nous en ajout ou en édition ? + if (!$galerie) { + // Nous sommes en ajout + $form->get('submit')->setValue('Ajouter'); + // Il faut créer un nouveau objet Galerie + $galerie = new Galerie; + // Garder cette information pour la vue + $is_new = true; + } else { + // Nous sommes en modification + $form->get('submit')->setValue('Modifier'); + // Il faut préremplir le formulaire avec les données actuelles + $form->bind($galerie); + // Garder cette information pour la vue + $is_new = false; + } + + // Récupération de l'objet requête + $request = $this->getRequest(); + if ($request->isPost()) { + // Mise en place pour la validation du formulaire + $form->setInputFilter($galerie->getInputFilter()); + $form->setData($request->getPost()); + + // Validation des données + if ($form->isValid()) { + // Sauvegarde des données + $galerie = $form->getData(); + if ($is_new) { + // Si l'objet n'est pas nouveau, les autres paramètres restent inchangés + // Si l'objet est nouveau, il faut renseigner l'id de l'utilisateur courant + $galerie->id_user = 1; //TODO: Mettre ici le user connecté + } + $this->_getGalerieTable()->save($galerie); + + // Redirection + return $this->redirect()->toRoute('galerie'); + } + } + + // On prépare l'affichage du formulaire + if ($is_new) { + $form->setAttribute('action', $this->url()->fromRoute('galerie/add')); + } else { + $form->setAttribute('action', $this->url()->fromRoute('galerie/edit', array('id' => $id))); + } + $form->prepare(); + + // On passe la main à la vue + return new ViewModel(array( + 'id' => $id, + 'form' => $form, + 'is_new' => $is_new, + )); } public function delAction() { - return array(); + return $this->redirect()->toRoute('galerie/view', array( + 'id' => $this->params()->fromRoute('id', null), + )); } public function viewAction() - { - return array(); + { + $id = $this->params()->fromRoute('id', null); + $galerie = $this->_getGalerieInfoTable()->any($id); + return new ViewModel(array( + 'id' => $id, + 'galerie' => $galerie, + )); } + }