Example #1
0
 /**
  * Constructeur.
  *
  * Cette classe étant appelée via la méthode jemdev\form::__call, les
  * paramètres envoyés individuellement arrivent ici sous la forme
  * d'un tableau indexé.
  * Les paramètres réellement attendus sont les attributs de base :
  * \@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)
  *
  * 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   string  $type       Type de champ input, ex. text, submit, etc...
  * @param   Array   $props      Voir ci-dessus
  * @param   String  $doctype    Standard à utiliser (HTML ou XHTML par défaut)
  * @param   Object  $oForm      Instance du formulaire en cours de construction
  */
 public function __construct($type, $props, $doctype, form $oForm)
 {
     /**
      * Récupération des paramètres.
      */
     $this->_sDoctype = $doctype;
     if ($type == 'radio' && !isset($props[1])) {
         $msg = sprintf($oForm->_aExceptionErreurs['name_radio_manquant'], $id);
         trigger_error($msg, E_USER_WARNING);
     }
     $id = $props[0];
     $name = isset($props[1]) ? $props[1] : $id;
     $value = isset($props[2]) ? $props[2] : null;
     $label = isset($props[3]) ? $props[3] : null;
     $this->_oForm = $oForm;
     parent::__construct($id, $type, $oForm);
     if ($type == 'file') {
         /**
          * Pour que ce type de champ soit opérationnel, il est indispensable
          * de modifier l'attribut enctype de la balise form : on modifie
          */
         $this->_oForm->_formEnctype = "multipart/form-data";
         /**
          * On ajoute également un champ caché limitant la taille du fichier selon
          * ce qui est défini dans la configuration de PHP
          */
         $ini_size = ini_get('upload_max_filesize');
         $masque = "#([0-9]+)([A-Z])#";
         $nb = preg_replace($masque, "\$1", $ini_size);
         $f = preg_replace($masque, "\$2", $ini_size);
         $m = $f == 'M' ? 1024 : 1;
         $size = $nb * $m;
         $this->_oForm->hidden('MAX_FILE_SIZE', 'MAX_FILE_SIZE', $size);
     } elseif ($type == 'radio' || $type == 'checkbox') {
         $select = isset($props[4]) ? $props[4] : null;
         if (!is_null($this->_aSentDatas) && isset($this->_aSentDatas[$name]) && !is_null($value) && $this->_aSentDatas[$name] == $value || true === $select) {
             $this->_aAttributs['checked'] = 'checked';
         } else {
             $this->_aAttributs['checked'] = null;
         }
     }
     /**
      * Initialisation des propriétés de base.
      */
     $this->_aAttributs['id'] = $id;
     $name = !is_null($name) && !empty($name) ? $name : $id;
     $this->_aAttributs['name'] = $name;
     if (!is_null($value)) {
         $this->_aAttributs['value'] = $value;
     }
     if (!is_null($label)) {
         $this->_label = $label;
     }
 }
Example #2
0
 /**
  * Constructeur.
  *
  * Cette classe étant appelée via la méthode jemdev\form::__call, les
  * paramètres envoyés individuellement arrivent ici sous la forme
  * d'un tableau indexé.
  * Les paramètres réellement attendus sont les attributs de base :
  * @param String $id        Identifiant du champ
  * @param String $name      Attribut name du champ (Facultatif, sera remplacé par la valeur de l'id si absent)
  * @param String $value     Valeur du champ (Facultatif)
  * @param String $label     Label pour le champ si nécessaire (Facultatif)
  *
  * 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 ci-dessus
  * @param   String  $doctype    Standard à utiliser (HTML ou XHTML par défaut)
  * @param   Object  $oForm      Instance du formulaire en cours de construction
  */
 public function __construct($props, $doctype, form $oForm)
 {
     /**
      * Initialisation des propriétés de base.
      */
     $this->_sDoctype = $doctype;
     $id = $props[0];
     $name = isset($props[1]) ? $props[1] : $id;
     $value = isset($props[2]) ? $props[2] : null;
     $this->_oForm = $oForm;
     parent::__construct($id, 'hidden', $oForm);
     $this->_aAttributs['id'] = $id;
     $name = !is_null($name) && !empty($name) ? $name : $id;
     $this->_aAttributs['name'] = $name;
     if (!is_null($value)) {
         $this->_aAttributs['value'] = $value;
     }
     $this->_oForm->setHidden($id, sprintf('%s', $this));
 }