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 $_galerieBTable;
- private $_galerieCTable;
+ private $_galerieTable;
+ private $_galerieInfoTable;
- private function _getGalerieArrayTable()
+ private function _getGalerieTable()
{
- if (!$this->_galerieArrayTable) {
+ if (!$this->_galerieTable) {
$sm = $this->getServiceLocator();
- $this->_galerieArrayTable = $sm->get('Galerie\Model\GalerieArrayTable');
+ $this->_galerieTable = $sm->get('Galerie\Model\GalerieTable');
}
- return $this->_galerieArrayTable;
+ return $this->_galerieTable;
}
- private function _getGalerieATable()
+ private function _getGalerieInfoTable()
{
- if (!$this->_galerieATable) {
+ if (!$this->_galerieInfoTable) {
$sm = $this->getServiceLocator();
- $this->_galerieATable = $sm->get('Galerie\Model\GalerieATable');
+ $this->_galerieInfoTable = $sm->get('Galerie\Model\GalerieInfoTable');
}
- return $this->_galerieATable;
+ return $this->_galerieInfoTable;
}
- private function _getGalerieBTable()
- {
- if (!$this->_galerieBTable) {
- $sm = $this->getServiceLocator();
- $this->_galerieBTable = $sm->get('Galerie\Model\GalerieBTable');
- }
- return $this->_galerieBTable;
- }
-
- private function _getGalerieCTable()
- {
- if (!$this->_galerieCTable) {
- $sm = $this->getServiceLocator();
- $this->_galerieCTable = $sm->get('Galerie\Model\GalerieCTable');
- }
- return $this->_galerieCTable;
- }
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),
- 'GalerieC_all' => $this->_getGalerieCTable()->fetchAll(),
- 'GalerieC_one' => $this->_getGalerieCTable()->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,
+ ));
}
+
}