Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Modification de code jFormsBuilderHtml

Posted by Mika on 05/02/2012 13:16

Bonjour et de retour rapidement sur un projet qui me fait à nouveau utiliser jelix :) J'ai besoin pour ce projet d'utiliser des listes déroulantes personnalisées (champ particulier en base géré par une classe faite main), tout se passe bien sauf que lorsque j'alimente ma liste déroulante j'ai une valeur "emptyItem" que je ne veux pas!! car je la traite déjà plus loin dans la même liste 0=>inconnu.

Du coup :

  • soit j'ai raté un épisode et on peut forcer la valeur "nulle" d'une liste à n'importe quel valeur (je parle bien de la valeur, pas du libellé de l'option!!) :
<option value="cequonveut"> libellé option nulle </option>
  • soit il faudrait modifier le "coeur" de jelix pour changer dans la méthode "outputMenulist" ligne 633 :
if ( $ctrl->emptyItemLabel!==null )
echo '<option value=""',($value===''?' selected="selected"':''),'>',htmlspecialchars($ctrl->emptyItemLabel),"</option>\n";

sachant que ce serait un retour en arrière sur cette modif : https://bitbucket.org/julieni/jelix-trunk-patches/src/128b1c3f30f5/jForms-menulist-should-have-empty-item-even-when-required.patch Sauf que ma modification permet de laisser le fonctionnement actuel tel quel pour ceux qui veulent un emptyItemLabel dans leur liste déroulante. Et pour ceux qui comme moi n'en veulent pas ben on l'indique en mettant "null" dans la propriété emptyItemLabel, tout simplement.

Mon morceau de code qui utiliserait la 2ème option :

$tab = array( "0" => "inconnu", "1" => "valeurA", "2" => "valeurB", );
$menulistctrl = new jFormsControlMenulist('monchamp');
$menulistctrl->emptyItemLabel=null; // Ici je précise que je veux pas d'option vide dans ma liste déroulante, car je gère déjà une ligne "inconnu" dans le tableau fourni
$menulistctrl->required = true;
$menulistctrl->datasource = new jFormsStaticDatasource();
$menulistctrl->datasource->data = $tab;
$form->addControl($menulistctrl);

Pour être encore plus clair, jelix génère ça :

<select name="monchamp" id="jforms_module_tble_monchamp" class="jforms-ctrl-menulist jforms-required" size="1">
<option value=""></option>
<option value="0">inconnu</option>
<option value="1">valeurA</option>
<option value="2">valeurB</option>
</select>

Alors que je voudrais avoir ça :

<select name="monchamp" id="jforms_module_tble_monchamp" class="jforms-ctrl-menulist jforms-required" size="1">
<option value="0">inconnu</option>
<option value="1">valeurA</option>
<option value="2">valeurB</option>
</select>

  [Opened] Modification de code jFormsBuilderHtml

Pourquoi ne supprimerais-tu pas cet element "0" de la liste que tu génères ?

  [Opened] Re: Modification de code jFormsBuilderHtml

Reply #2 Posted by Mika on 05/03/2012 11:03

Parce que je me greffe sur une base existante, et la valeur "vide" n'est pas null mais "0". Y a déjà un front office existant et une base alimentée par le front office. J'utilise Jelix pour le BO uniquement.

Après ma demande peut aussi servir aux gens qui ne veulent pas de "emptyItem" pour forcer dans certaines conditions un choix par défaut...

 
Page
  1. Modification de code jFormsBuilderHtml