Exemplo n.º 1
0
 public function __toString()
 {
     $getVal = parent::getValueFromArrayData($this->_aAttributs['name'], $this->_aSentDatas);
     $valeur = !empty($this->_aAttributs['value']) ? $this->_aAttributs['value'] : $getVal;
     if (isset($valeur) && $this->_type != 'password') {
         $this->_aAttributs['value'] = $valeur;
     }
     if (($this->_type == 'radio' || $this->_type == 'checkbox') && !is_null($this->_aAttributs['value']) && !is_null($this->_aAttributs['checked']) && $getVal == $this->_aAttributs['value']) {
         $this->_aAttributs['checked'] = 'checked';
     }
     $sChamp = '<input type="' . $this->_type . '"';
     foreach ($this->_aAttributs as $k => $v) {
         if (!empty($v) && !is_null($v) || $k == 'value') {
             $sChamp .= ' ' . $k . '="' . $v . '"';
         }
     }
     $sChamp .= $this->_sDoctype == 'HTML' ? '>' : ' />';
     return $sChamp;
 }
Exemplo n.º 2
0
 /**
  * Validation des règles de gestion du formulaire.
  *
  * Les règles créées avec le formulaire sont toutes vérifiées, en cas d'erreur,
  * le message correspondant est stocké dans un tableau indexé.
  * On ne vérifiera qu'une règle à la fois par champ : si elle retourne
  * une erreur, on arrêtera la vérification pour passer au champ suivant.
  *
  * @return  Array
  */
 public function validerInfos()
 {
     foreach ($this->_aRules as $champ => $aRegles) {
         /**
          * On vérifie si le champ est obligatoirement requis ou non
          */
         $bRequis = false;
         foreach ($this->_aRules[$champ] as $r) {
             if (in_array('required', $r[0])) {
                 $bRequis = true;
                 break;
             }
         }
         $nbr = count($this->_aRules[$champ]);
         for ($i = 0; $i < $nbr; $i++) {
             $aRegle = $this->_aRules[$champ][$i][0];
             $sRegle = $aRegle[0];
             if (in_array($sRegle, self::$methodesValidation)) {
                 $nbp = count($this->_aRules[$champ][$i][0]);
                 /**
                  * Si la donnée existe :
                  * Attention, une case non cochée sera
                  * absente des index des données.
                  * Attention au type input-file, il n'apparaîtra
                  * pas dans les données POST_DATA ni GET_DATA
                  */
                 $dataChamp = field::getValueFromArrayData($champ, $this->_aDatas);
                 if (is_array($dataChamp)) {
                     foreach ($dataChamp as $k => $v) {
                         if (false != strstr($champ, $k)) {
                             $dataChamp = $dataChamp[$k];
                         }
                     }
                 }
                 if (empty($dataChamp)) {
                     if (isset($this->_aDatas['fichiers'][$champ])) {
                         $dataChamp = $this->_aDatas['fichiers'][$champ]['name'];
                     }
                 }
                 if (isset($dataChamp)) {
                     if (is_array($this->_aRules[$champ][$i][0]) && $nbp > 1) {
                         $params = array($dataChamp);
                         for ($a = 1; $a < $nbp; $a++) {
                             $params[] = $this->_aRules[$champ][$i][0][$a];
                         }
                         $msg = $this->_aRules[$champ][$i][1];
                     } else {
                         $params = $dataChamp;
                         $msg = $this->_aRules[$champ][$i][1];
                     }
                     $p = $params;
                 } else {
                     /**
                      * Donnée absente de l'index, exemple, case non cochée.
                      * On appellera la méthode avec une valeur vide.
                      */
                     $msg = $this->_aRules[$champ][$i][1];
                     $p = '';
                 }
                 $bVerif = (true == $bRequis || $sRegle == 'required') && (!is_array($p) && strlen($p) > 0 || is_array($p) && strlen($p[0]) > 0);
                 $v = true == $bVerif ? call_user_func(array($this, '_' . $sRegle), $p) : true;
                 $v = false;
                 if ($sRegle == 'required') {
                     $v = $this->_required($p);
                 } else {
                     $val = is_array($p) ? trim($p[0]) : trim($p);
                     $v = $val !== "" ? call_user_func(array($this, '_' . $sRegle), $p) : true;
                 }
                 if (false === $v) {
                     $this->_aErreursRelevees[] = $msg;
                     /**
                      * Il y a une erreur dans ce champ, inutile de vérifier les autres règles
                      * qui y sont attachées, on passe au champ suivant. (Sortie de la
                      * boucle for pour le champ suivant dans la boucle foreach)
                      */
                     break;
                 }
             } else {
                 /**
                  * On lève une exception si la règle utilisée n'existe pas.
                  */
                 $msgerr = sprintf($this->_aExceptionmessages['regle_valid_inexistante'], $sRegle);
                 $this->_aErreursRelevees[] = $msgerr;
             }
         }
     }
     return $this->_aErreursRelevees;
 }