public function afficherFromArray($parametres = array())
    {
        $html = "";
        $t = new Template($this->cheminTemplates);
        $t->assign_vars(array('idFormObject' => $this->identifiantObject));
        if (isset($parametres['onClickButtonSubmit'])) {
            $t->assign_vars(array('onClickButtonSubmit' => $parametres['onClickButtonSubmit']));
        }
        $formName = "";
        if (isset($parametres['formName'])) {
            $t->assign_vars(array('formName' => $parametres['formName']));
            $formName = $parametres['formName'];
        } else {
            $t->assign_vars(array('formName' => 'defaultFormName'));
            $formName = "defaultFormName";
        }
        if (isset($parametres['styleEntete'])) {
            $t->assign_vars(array('styleEntete' => $parametres['styleEntete']));
        }
        if (isset($parametres['styleField'])) {
            $t->assign_vars(array('styleField' => $parametres['styleField']));
        }
        if (isset($parametres['htmlSubmitButton'])) {
            $t->assign_vars(array('htmlSubmitButton' => $parametres['htmlSubmitButton']));
        }
        if (isset($parametres['submitButtonId'])) {
            $t->assign_vars(array('submitButtonId' => $parametres['submitButtonId']));
        }
        if (isset($parametres['onClickSubmitButton'])) {
            $t->assign_vars(array('onClickSubmitButton' => $parametres['onClickSubmitButton']));
        }
        if (isset($parametres['codeHtmlSubmitButton'])) {
            $t->assign_vars(array('codeHtmlSubmitButton' => $parametres['codeHtmlSubmitButton']));
        }
        if (isset($parametres['styleError'])) {
            $t->assign_vars(array('styleError' => $parametres['styleError']));
        }
        if (isset($parametres['templateFileName'])) {
            $t->set_filenames(array('formulaire' => $parametres['templateFileName']));
        } else {
            $t->set_filenames(array('formulaire' => 'formGeneric.tpl'));
        }
        if (isset($parametres['titrePage'])) {
            $t->assign_vars(array('titrePage' => $parametres['titrePage']));
        }
        if (isset($parametres['formAction'])) {
            $t->assign_vars(array('formAction' => $parametres['formAction']));
        }
        if (isset($parametres['codeHtmlBeforeSubmitButton'])) {
            $t->assign_vars(array('codeHtmlBeforeSubmitButton' => $parametres['codeHtmlBeforeSubmitButton']));
        }
        if (isset($parametres['codeHtmlInFormAfterFields'])) {
            $t->assign_vars(array('codeHtmlInFormAfterFields' => $parametres['codeHtmlInFormAfterFields']));
        }
        if (isset($parametres['codeHtmlInFormBeforeFields'])) {
            $t->assign_vars(array('codeHtmlInFormBeforeFields' => $parametres['codeHtmlInFormBeforeFields']));
        }
        if (isset($parametres['codeHtmlAfterSubmitButton'])) {
            $t->assign_vars(array('codeHtmlAfterSubmitButton' => $parametres['codeHtmlAfterSubmitButton']));
        }
        if (isset($parametres['submitButtonValue'])) {
            $t->assign_vars(array('formButtonName' => $parametres['submitButtonValue']));
        } else {
            $t->assign_vars(array('formButtonName' => _("Valider")));
        }
        if (isset($parametres['htmlCodeEnteteFields'])) {
            $t->assign_vars(array('htmlCodeEnteteFields' => $parametres['htmlCodeEnteteFields']));
        }
        if (isset($parametres['htmlCodeFields'])) {
            $t->assign_vars(array('htmlCodeFields' => $parametres['htmlCodeFields']));
        }
        if (isset($parametres['tableHtmlCode'])) {
            $t->assign_vars(array('tableHtmlCode' => $parametres['tableHtmlCode']));
        }
        if (isset($parametres['complementHTML'])) {
            $t->assign_vars(array('complementHTML' => $parametres['complementHTML']));
        }
        if (isset($parametres['captcha'])) {
            $t->assign_block_vars('captcha', array());
            $t->assign_vars(array('captcha' => '<script src="https://www.google.com/recaptcha/api.js" async defer></script>
						<div class="g-recaptcha" data-sitekey="6LeXTOASAAAAACl6GZmAT8QSrIj8yBrErlQozfWE"></div>'));
            if (isset($parametres['captcha-error'])) {
                $t->assign_vars(array('captcha-error' => _('Captcha incorrect !')));
            }
        }
        if (isset($parametres['fields'])) {
            foreach ($parametres['fields'] as $fieldName => $proprietes) {
                if (isset($proprietes['forceValueTo'])) {
                    $value = $proprietes['forceValueTo'];
                } elseif (isset($this->variablesPost[$fieldName])) {
                    $value = $this->variablesPost[$fieldName];
                } else {
                    $value = $proprietes['default'];
                }
                if (!isset($proprietes['htmlCode2'])) {
                    $proprietes['htmlCode2'] = '';
                }
                if (!isset($proprietes['htmlCodeBeforeField'])) {
                    $proprietes['htmlCodeBeforeField'] = '';
                }
                switch ($proprietes['type']) {
                    case 'text':
                        $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        break;
                    case 'date':
                        $d = new dateObject();
                        $datePicker = "";
                        if (isset($proprietes['withDatePicker']) && $proprietes['withDatePicker'] == true) {
                            $datePicker = "<INPUT TYPE='button' name='datePick_{$fieldName}' value='Pick' onclick=\"" . $d->getJsCallToDatePicker(array('toElementDestination' => 'document.' . $formName . '.' . $fieldName)) . "\">";
                        }
                        $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">{$datePicker}" . $proprietes['htmlCode2'];
                        // a rajouter => le date picker
                        break;
                    case 'file':
                        $champ = $proprietes['htmlCodeBeforeField'] . "<input type='file' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        break;
                    case 'password':
                        $champ = $proprietes['htmlCodeBeforeField'] . "<input type='password' name='" . $fieldName . "' value='" . $value . "' " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        break;
                    case 'email':
                        $champ = $proprietes['htmlCodeBeforeField'] . "<input type='text' name='" . $fieldName . "' id='" . $fieldName . "' value='" . stripslashes($value) . "' " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        break;
                    case 'bigText':
                        $champ = $proprietes['htmlCodeBeforeField'] . "<textarea name='" . $fieldName . "' id='" . $fieldName . "' " . $proprietes['htmlCode'] . ">" . stripslashes($value) . "</textarea>" . $proprietes['htmlCode2'];
                        break;
                    case 'tinyMCE':
                        // utiliser la fonction tinyMCE.triggerSave(true, true) pour transferer le contenu de tinyMCE vers le champs textarea pour pouvoir recuperer le contenu en js
                        $this->tinyMCEInit(array('fieldName' => $fieldName));
                        $f = new formGenerator();
                        $champ = $proprietes['htmlCodeBeforeField'] . "<div id='tinyMCE'><textarea name='" . $fieldName . "' id='" . $fieldName . "' " . $proprietes['htmlCode'] . ">" . stripslashes($value) . "</textarea></div>" . $proprietes['htmlCode2'];
                        break;
                    case 'hidden':
                        $champ = "<input type='hidden' name='" . $fieldName . "' id='" . $fieldName . "' value='" . stripslashes($value) . "' " . $proprietes['htmlCode'] . ">";
                        break;
                    case 'captcha':
                        // modif par fabien le 13/04/2011 pour un captcha plus fort (on a été piraté sur le captcha à plusieurs reprise ce jour)
                        $champ = $proprietes['htmlCodeBeforeField'] . "<img id=\"captcha\" src=\"includes/securimage/securimage_show.php?sid=" . md5(uniqid(time())) . "\" alt=\"CAPTCHA Image\" valign='middle' />&nbsp;Recopiez les caractères de l'image<br> <a href=\"#\" onclick=\"document.getElementById('captcha').src = 'includes/securimage/securimage_show.php?sid=' + Math.random(); return false\">Recharger</a><br><input type='text' name='" . $fieldName . "' value=''>";
                        //echo md5(uniqid(time()))
                        break;
                        /*case 'optionsList':
                              $champs=$fieldName;
                              if (is_array($proprietes['elementList']))
                              {
                                  foreach ($proprietes['elementList'] as $indice => $val)
                                  {
                                  
                                  }
                              
                              }
                          
                              break;*/
                    /*case 'optionsList':
                          $champs=$fieldName;
                          if (is_array($proprietes['elementList']))
                          {
                              foreach ($proprietes['elementList'] as $indice => $val)
                              {
                              
                              }
                          
                          }
                      
                          break;*/
                    case 'simpleList':
                        $champ = "<select name='" . $fieldName . "' id='" . $fieldName . "'>";
                        if (!isset($proprietes['noOptionAucun']) || $proprietes['noOptionAucun'] == false) {
                            $champ .= "<option value='0'>Aucun</option>";
                        }
                        if (is_array($proprietes['elementList'])) {
                            foreach ($proprietes['elementList'] as $indice => $val) {
                                $selected = '';
                                if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && $this->variablesPost[$fieldName] == $val['value']) {
                                    $selected = 'selected';
                                }
                                $champ .= "<option value=\"" . $val['value'] . "\" " . $selected . ">" . $val['libelle'] . "</option>";
                            }
                        }
                        $champ .= "</select>";
                        break;
                    case 'multipleList':
                        $champ = "<select name='" . $fieldName . "[]' multiple>";
                        if (!isset($proprietes['noOptionAucun']) || $proprietes['noOptionAucun'] != true) {
                            $champ .= "<option value='0'>Aucun</option>";
                        }
                        if (is_array($proprietes['elementList'])) {
                            foreach ($proprietes['elementList'] as $indice => $val) {
                                $selected = '';
                                if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) {
                                    $selected = 'selected';
                                }
                                $champ .= "<option value=\"" . $val['value'] . "\" " . $selected . ">" . $val['libelle'] . "</option>";
                            }
                        }
                        $champ .= "</select>" . $proprietes['htmlCode2'];
                        break;
                    case 'checkbox':
                        $champ = "";
                        if (isset($proprietes['elementList']) && is_array($proprietes['elementList'])) {
                            foreach ($proprietes['elementList'] as $indice => $val) {
                                $selected = '';
                                if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) {
                                    $selected = 'checked';
                                }
                                if (isset($proprietes['separator'])) {
                                    $separator = $proprietes['separator'];
                                } else {
                                    $separator = "<br>";
                                }
                                $champ .= "<input type='checkbox' name='" . $fieldName . "[]' id='" . $fieldName . $indice . "' value='" . $val['value'] . "' " . $selected . ">" . $val['libelle'] . $separator;
                            }
                        } else {
                            $champ = "<input type='checkbox' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        }
                        break;
                    case 'singleCheckBox':
                        $checked = '';
                        if (isset($proprietes['isChecked']) && ($proprietes['isChecked'] == true || $proprietes['isChecked'] == 1)) {
                            $checked = 'checked';
                        }
                        $champ = "<input type='checkbox' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" {$checked} " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        break;
                    case 'radio':
                        $champ = "";
                        if (isset($proprietes['elementList']) && is_array($proprietes['elementList'])) {
                            foreach ($proprietes['elementList'] as $indice => $val) {
                                $selected = '';
                                if (isset($proprietes['valueSubmited']) && $proprietes['valueSubmited'] != '0' && $proprietes['valueSubmited'] == $val['value'] || (!isset($proprietes['valueSubmited']) || $proprietes['valueSubmited'] == '0') && isset($this->variablesPost[$fieldName]) && in_array($val['value'], $this->variablesPost[$fieldName])) {
                                    $selected = 'checked';
                                }
                                if (isset($proprietes['separator'])) {
                                    $separator = $proprietes['separator'];
                                } else {
                                    $separator = "<br>";
                                }
                                $champ .= "<input type='radio' name='" . $fieldName . "' id='" . $fieldName . $indice . "' value='" . $val['value'] . "' " . $selected . ">" . $val['libelle'] . $separator;
                            }
                        } else {
                            $champ = "<input type='radio' name='" . $fieldName . "' id='" . $fieldName . "' value=\"" . stripslashes($value) . "\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        }
                        break;
                    case 'uploadImage':
                        $champ = "<input type='file' name='" . $fieldName . "' id='" . $fieldName . "' value=\"\" " . $proprietes['htmlCode'] . ">" . $proprietes['htmlCode2'];
                        if (isset($proprietes['physicalImagePathForTestExists']) && $proprietes['physicalImagePathForTestExists'] != '') {
                            if ($value != '' && file_exists($proprietes['physicalImagePathForTestExists'] . $value)) {
                                $champ .= "<img src='" . $proprietes['urlImagePathForDisplayInForm'] . $value . "' border=0>";
                            }
                        }
                        break;
                    default:
                        $champ = "";
                        echo "champ {$fieldName} défini partiellement,  framework::formGenerator";
                        break;
                }
                if ($proprietes['type'] == 'hidden') {
                    $t->assign_block_vars('hiddenFields', array('field' => $champ));
                } else {
                    $t->assign_block_vars('fields', array('name' => $proprietes['libelle'], 'field' => $champ, 'error' => $proprietes['error']));
                }
            }
        }
        ob_start();
        $t->pparse('formulaire');
        $html = ob_get_contents();
        ob_end_clean();
        return $html;
    }