Advertisement
Guest User

Untitled

a guest
Sep 19th, 2012
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.52 KB | None | 0 0
  1.     /**
  2.      * (non-PHPdoc)
  3.      * @see Zend_Form::isValid()
  4.      */
  5.     public function isValid($data) {
  6.         // Vérification par défaut
  7.         $parentIsValid = parent::isValid($data);
  8.  
  9.         // Vérifie que chaque nom de système saisi est unique
  10.         $values = array();
  11.         $isValid = true;
  12.  
  13.         foreach($data as $system => $system_values) {
  14.             // Les données possèdent également le numéro de l'étape (__step) et le nom du bouton cliqué
  15.             if(preg_match('/^system_[0-9]+/', $system)) {
  16.                 $cn = $system_values['cn'];
  17.  
  18.                 if(isset($values[$cn])) {
  19.                     $isValid = false;
  20.                     $values[$cn][] = $this->getSubForm($system);
  21.                 } else {
  22.                     $values[$cn] = array($this->getSubForm($system));
  23.                 }
  24.             }
  25.         }
  26.  
  27.         if(!$isValid) {
  28.             // $cn : valeur fournie ; $systems : tableau de SubForm où un SubForm = un système
  29.             foreach($values as $cn => $systems) {
  30.                 if(count($systems) > 1) {
  31.                     for($i = 0; $i < count($systems); ++$i) {
  32.                         $labels = array();
  33.                         for($j = 0; $j < count($systems); ++$j) {
  34.                             if($j !== $i) {
  35.                                 $labels[] = $systems[$j]->getLegend();
  36.                             }
  37.                         }
  38.  
  39.                         $systems[$i]->getElement('cn')->clearErrorMessages();
  40.                        
  41.                         if(count($labels) > 1) {
  42.                             $systems[$i]->getElement('cn')->addError('La valeur saisie est identique à celle des systèmes ' . implode(', ', $labels));
  43.                         } else {
  44.                             $systems[$i]->getElement('cn')->addError('La valeur saisie est identique à celle du système ' . $labels[0]);
  45.                         }
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.  
  51.         return $parentIsValid && $isValid;
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement