Formulaire : étape 5, rajout internationalisation
[zf2.biz/galerie.git] / module / Galerie / src / Galerie / Controller / IndexController.php
index de82f92..0219600 100644 (file)
@@ -5,63 +5,147 @@ namespace Galerie\Controller;
 use Zend\Mvc\Controller\AbstractActionController; 
 use Zend\View\Model\ViewModel;
 
+use Galerie\Model\Galerie;
+
 class IndexController extends AbstractActionController 
 {
 
-    private $_galerieArrayTable;
-    private $_galerieATable;
+    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 _getGalerieArrayTable()
+    private function _getGalerieInfoTable()
     {
-        if (!$this->_galerieArrayTable) {
+        if (!$this->_galerieInfoTable) {
             $sm = $this->getServiceLocator();
-            $this->_galerieArrayTable = $sm->get('Galerie\Model\GalerieArrayTable');
+            $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable');
         }
-        return $this->_galerieArrayTable;
+        return $this->_galerieInfoTable;
     }
 
-    private function _getGalerieATable()
+    private function _getTranslator()
     {
-        if (!$this->_galerieATable) {
+        if (!$this->_translator) {
             $sm = $this->getServiceLocator();
-            $this->_galerieATable = $sm->get('Galerie\Model\GalerieATable');
+            $this->_translator = $sm->get('translator');
         }
-        return $this->_galerieATable;
+        return $this->_translator;
     }
 
-    private function _getGalerieBTable()
+    private function _getGalerieForm()
     {
-        if (!$this->_galerieBTable) {
+        if (!$this->_galerieForm) {
             $sm = $this->getServiceLocator();
-            $this->_galerieBTable = $sm->get('Galerie\Model\GalerieBTable');
+            $this->_galerieForm = $sm->get('Galerie\Form\GalerieForm');
         }
-        return $this->_galerieBTable;
+        return $this->_galerieForm;
     }
 
+
+
     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 = $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,
+        ));
     } 
+
 }