From af33204a419232fd460a7da0cded137710dbd980 Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@git-test.afi-sa.fr> Date: Sat, 25 Aug 2012 08:57:28 +0000 Subject: [PATCH] Simplification validation formulaire --- .../admin/controllers/FormationController.php | 10 ++---- library/ZendAfi/Form.php | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/application/modules/admin/controllers/FormationController.php b/application/modules/admin/controllers/FormationController.php index 2f73d293947..64ed34aa629 100644 --- a/application/modules/admin/controllers/FormationController.php +++ b/application/modules/admin/controllers/FormationController.php @@ -356,21 +356,15 @@ class Admin_FormationController extends Zend_Controller_Action { ->setDateDebut($this->_readPostDate($this->_request->getPost('date_debut'))) ->setDateFin($this->_readPostDate($this->_request->getPost('date_fin'))) ->setDateLimiteInscription($this->_readPostDate($this->_request->getPost('date_limite_inscription'))) - ->setIntervenants($intervenants) - ->validate(); + ->setIntervenants($intervenants); - if ($form->isValid($this->_request->getPost()) && $session->isValid()) { + if ($form->isValid($session)) { $session->save(); $this->_helper->notify(sprintf('Session du %s sauvegardée', $this->view->humanDate($session->getDateDebut(), 'd MMMM YYYY'))); $this->_redirect('admin/formation/session_edit/id/'.$session->getId()); return true; } - - foreach($session->getErrors() as $attribute => $message) { - if ($element = $form->getElement($attribute)) - $element->addError($message); - } } $this->view->form = $form; diff --git a/library/ZendAfi/Form.php b/library/ZendAfi/Form.php index a2f61c12457..9dc434ab365 100644 --- a/library/ZendAfi/Form.php +++ b/library/ZendAfi/Form.php @@ -46,4 +46,35 @@ class ZendAfi_Form extends Zend_Form { $this->addElement('text', $name, array('required' => true, 'allowEmpty' => false)); return $this->getElement($name); } + + + /** + * Validate the form + * + * @param mixed $data + * @return boolean + */ + public function isValid($array_or_model) { + if (is_array($array_or_model)) + return parent::isValid($array_or_model); + + $valid = parent::isValid($array_or_model->toArray()) & $array_or_model->isValid(); + $this->addModelErrors($array_or_model); + + $this->_errorsExist = !$valid; + return $valid; + } + + + /** + * @param Storm_Model_Abstrict $model + */ + public function addModelErrors($model) { + $model->validate(); + foreach($model->getErrors() as $attribute => $message) { + if ($element = $this->getElement($attribute)) + $element->addError($message); + } + } + } \ No newline at end of file -- GitLab