X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=module%2FGalerie%2Fsrc%2FGalerie%2FController%2FIndexController.php;h=0219600844c46e73fab27b0c58c359198c59f8f8;hb=7146e4cfb9136106487215e502284af689e5fe7e;hp=b8847a0cbde5f5032355eebd8f6582091f289114;hpb=be46560bc8bd090930c4d0ede944a9b74ab59a15;p=zf2.biz%2Fgalerie.git diff --git a/module/Galerie/src/Galerie/Controller/IndexController.php b/module/Galerie/src/Galerie/Controller/IndexController.php index b8847a0..0219600 100644 --- a/module/Galerie/src/Galerie/Controller/IndexController.php +++ b/module/Galerie/src/Galerie/Controller/IndexController.php @@ -5,11 +5,16 @@ 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() @@ -30,6 +35,25 @@ class IndexController extends AbstractActionController 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() { @@ -39,34 +63,78 @@ class IndexController extends AbstractActionController } public function editAction() - { + { + // Création du formulaire + $form = $this->_getGalerieForm(); + // Récupération de l'objet de travail $id = $this->params()->fromRoute('id', null); - $galerie = $this->_getGalerieTable()->any($id); + 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()) { - // Validation des données + // Mise en place pour la validation du formulaire + $form->setInputFilter($galerie->getInputFilter()); + $form->setData($request->getPost()); - if (true) {//TODO: Si les données sont valides + // Validation des données + if ($form->isValid()) { // Sauvegarde des données - // $this->_getGalerieTable()->save(?TODO?); + $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, - 'galerie' => $galerie, + 'form' => $form, + 'is_new' => $is_new, )); } public function delAction() { return $this->redirect()->toRoute('galerie/view', array( - 'id' => $id, + 'id' => $this->params()->fromRoute('id', null), )); }