Bonjour,
Dans la fonction showInputField de l’objet commonobject (fichier /code/class/commonobject.class.php)
la variable $val passé en paramètre est écrasé dans les 1ere ligne et remplacé par $this->fields[$key]. De plus dans la suite il est certaine fois utilisé $val , d’autres fois il est utilisé $this->fields[$key].
Si $val passé en paramètre est déjà égale à $this->fields[$key] (je pense dans la grande majorité des cas) ça pose pas de problème. Mais ça ferme à une variation de $val par rapport à $this->fields[$key].
Et dans ce cas, pourquoi mettre en entré $val ??
Perso, je faisait une modification de $val avant affichage du input pour ajouter l’info d’un choix par défaut conseillé suivant certain paramètres.
Serai-il possible de ne pas écraser $val et de l’utiliser au lieux de $this->fields[$key] ?? d’autant que çà porte à confusion…
Extrait de la fonction:
function showInputField($val, $key, $value, $moreparam=’’, $keysuffix=’’, $keyprefix=’’, $morecss=0)
{
global $conf,$langs,$form;
if (! is_object($form))
{
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
$form=new Form($this-\>db);
}
[b]$val=$this-\>fields[$key];[/b]
$out='';
$type='';
$param = array();
$param['options']=array();
$size =[b][color=#ff0000]$this-\>fields[$key]['size'];[/color][/b]
// Because we work on extrafields
if(preg_match('/^integer:unhappy:.*):unhappy:.*)/i', [color=#008800]$val['type'][/color], $reg)){
$param['options']=array($reg[1].':'.$reg[2]=\>'N');
$type ='link';
} elseif(preg_match('/^link:unhappy:.*):unhappy:.*)/i', [color=#008800]$val['type'][/color], $reg)) {
$param['options']=array($reg[1].':'.$reg[2]=\>'N');
$type ='link';
} elseif(preg_match('/^sellist:unhappy:.*):unhappy:.*):unhappy:.*):unhappy:.*)/i', [color=#008800]$val['type'][/color], $reg)) {
$param['options']=array($reg[1].':'.$reg[2].':'.$reg[3].':'.$reg[4]=\>'N');
$type ='sellist';
} elseif(preg_match('/varchar\((\d+)\)/', [color=#008800]$val['type'][/color],$reg)) {
$param['options']=array();
$type ='varchar';
$size=$reg[1];
} elseif(preg_match('/varchar/', [color=#008800]$val['type'][/color])) {
$param['options']=array();
$type ='varchar';
} elseif(is_array([color=#ff0000][b]$this-\>fields[$key][/b][/color]['arrayofkeyval'])) {
$param['options']=[b][color=#ff0000]$this-\>fields[$key][/color][/b]['arrayofkeyval'];
$type ='select';
} else {
$param['options']=array();
$type =[b][color=#ff0000]$this-\>fields[$key][/color][/b]['type'];