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