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; }
/** * 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; }