Exemplo n.º 1
0
 /**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * 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;
 }
Exemplo n.º 3
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;
 }
Exemplo n.º 4
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];
     }
 }
Exemplo n.º 5
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.º 6
0
 /**
  * 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';
 }
Exemplo n.º 7
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;
 }