/** * Constructeur. * * @param Array $props Tableau de paramètre ne contenant que le nom du groupe * @param form $oForm Instance de l'objet formulaire. */ public function __construct($props, form $oForm) { $this->_groupeName = $props[0]; $this->_aAttributs['id'] = $props[0]; $this->_aAttributs['name'] = isset($props[1]) ? $props[1] : $props[0]; $this->_aAttributs['value'] = null; $this->_label = null; parent::__construct($oForm); }
/** * Constructeur. * */ public function __construct($label, form $oForm) { parent::__construct($oForm); $this->_aAttributs['label'] = $label; $this->_oForm = $oForm; $this->_tag = 'optgroup'; $this->_contenu = ''; $this->_nbOptions = 0; }
/** * Constructeur. */ function __construct($props, form $oForm) { $this->_tag = 'datalist'; $this->_type = 'datalist'; $this->_oForm = $oForm; parent::__construct($oForm); $this->_aAttributs['id'] = $props[0]; $this->_aAttributs['name'] = isset($props[1]) ? $props[1] : $props[0]; $this->_contenu = ''; $this->_nbOptions = 0; }
/** * Constructeur. * * Définit une zone de saisie de texte libre. Les paramètres attendus sont * sensiblement les mêmes que pour un champ input, le doctype en moins.<br /> * Notez que l'attribut value est invalide pour un textarea. Cependant on laisse ici * la possibilité de l'utiliser et le cas échéant, ce sera intercepté et transféré * vers le contenu de la balise.<br /> * * D'autres attributs sont possibles sous réserve qu'ils soient définis * dans le constructeur ou les classes parentes. Par exemple, l'attribut * style est générique et peut être alimenté avec la méthode setAttribute(). * * @param Array $props Voir détail ci-dessous * @param String $props[0] = id Identifiant du champ * @param String $props[1] = name Attribut name du champ (Facultatif, sera remplacé par * la valeur de l'id si absent) * @param String $props[2] = value Valeur du champ (Facultatif) * @param String $props[3] = label Label pour le champ si nécessaire (Facultatif) * @param Object $oForm Instance du formulaire en cours de construction */ public function __construct($props, form $oForm) { $this->_tag = 'textarea'; $this->_oForm = $oForm; parent::__construct($oForm); $this->_aAttributs['id'] = $props[0]; $this->_aAttributs['name'] = isset($props[1]) ? $props[1] : $props[0]; $value = isset($props[2]) ? $props[2] : null; $this->_contenu = $value; if (isset($props[3])) { $this->_label = $props[3]; } }
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; }
/** * Constructeur. * * Définit une liste de sélection. L'objet permet de stocker * un certain nombre d'items. La méthode __toString() va * retourner l'ensemble des options définies. */ public function __construct(form $oForm) { parent::__construct($oForm); $this->_oForm = $oForm; $this->_tag = 'option'; }