X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=module%2FGalerie%2Fsrc%2FGalerie%2FController%2FIndexController.php;h=78aa858ed813c2bfa5fcfa861dd26a87204ad53e;hb=34c823d7546c4d016383e848e8971e3491479ddb;hp=de82f92d3794da5284e22f1615bc5c459fe1cb63;hpb=744bd5c9f8684b1b2f81f9e701eaf910adfcf6f0;p=zf2.biz%2Fgalerie.git diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index de82f92..78aa858 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -5,63 +5,126 @@ namespace Galerie\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; +use Galerie\Model\Galerie; +use Galerie\Form\GalerieForm; + class IndexController extends AbstractActionController { - private $_galerieArrayTable; - private $_galerieATable; + private $_galerieTable; + private $_galerieInfoTable; - private function _getGalerieArrayTable() - { - if (!$this->_galerieArrayTable) { - $sm = $this->getServiceLocator(); - $this->_galerieArrayTable = $sm->get('Galerie\Model\GalerieArrayTable'); - } - return $this->_galerieArrayTable; - } - private function _getGalerieATable() + private function _getGalerieTable() { - if (!$this->_galerieATable) { + if (!$this->_galerieTable) { $sm = $this->getServiceLocator(); - $this->_galerieATable = $sm->get('Galerie\Model\GalerieATable'); + $this->_galerieTable = $sm->get('Galerie\Model\GalerieTable'); } - return $this->_galerieATable; + return $this->_galerieTable; } - private function _getGalerieBTable() + private function _getGalerieInfoTable() { - if (!$this->_galerieBTable) { + if (!$this->_galerieInfoTable) { $sm = $this->getServiceLocator(); - $this->_galerieBTable = $sm->get('Galerie\Model\GalerieBTable'); + $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable'); } - return $this->_galerieBTable; + return $this->_galerieInfoTable; } + public function indexAction() { return new ViewModel(array( - 'GalerieArray_all' => $this->_getGalerieArrayTable()->fetchAll(), - 'GalerieArray_one' => $this->_getGalerieArrayTable()->getGalerie(1), - 'GalerieA_all' => $this->_getGalerieATable()->fetchAll(), - 'GalerieA_one' => $this->_getGalerieATable()->getGalerie(1), - 'GalerieB_all' => $this->_getGalerieBTable()->fetchAll(), - 'GalerieB_one' => $this->_getGalerieBTable()->getGalerie(1), + 'galeries' => $this->_getGalerieInfoTable()->all(), )); } public function editAction() - { - return array(); + { + // Création du formulaire + $form = new GalerieForm; + + // 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, + )); } + }