Salut à tous. J'utilise pour la création de formulaire un helpers FORM inspirer de ceux que l'on trouve dans les tuto de graphikart. Seulement voilà je n'ai jamais réussi à faire fonctionner l’opérateur SELECT de cette fonction. et du coup je cogne à taper tout mes SELECT à la main [code] Class form{ <?php function input($div=null, $name, $label, $value, $check=null, $options = array(),$error_message=null,$info=null){
$r = '<div class="input'.$div.'"><label for="'.$name.'">'.$label.'</label>
'; $attr = ''; foreach($options as $k=>$v){ if($k!='type'){ $attr .= " $k=\"$v\""; } } if($label == 'hidden'){ return '<input type="hidden" name="'.$name.'" value="'.$value.'">'; }elseif (!isset($options['type']) && !isset($options['options'])){ $r .= '<input type="text" value="'.$value.'" name="'.$name.'" id="'.$name.'">'; }elseif(isset($options['options'])){ $r .= '<select id="input'.$name.'" name="'.$name.'">';
foreach($options['options'] as $k=>$v){
$r .= '<option value="'.$k.'">'.$v.'</option>';
}
$r .= '</select>'; }elseif ($options['type'] == 'email'){ $r .= '<input type="email" value="'.$value.'" name="'.$name.'">
'; }elseif ($options['type'] == 'textarea'){ $r .= '<textarea id="'.$name.'" name="'.$name.'">'.$value.'</textarea>'; }elseif($options['type'] == 'checkbox'){ $r .= '<input type="hidden" name="'.$name.'" value="0"><input type="checkbox" name="'.$name.'" id="check_'.$name.'" value="'.$value.'">'; }elseif($options['type'] == 'file'){ $r .= '<input type="file" class="input-file" id="input'.$name.'" name="'.$name.'">'; }elseif($options['type'] == 'password'){ $r .= '<input type="password" id="$name" name="'.$name.'" value="'.$value.'">'; }elseif($options['type'] == 'url'){ $r .= '<input type="url" id="$name" name="'.$name.'" value="'.$value.'">'; } if (isset ($error_message) && $error_message != null){ $r .= ''.$error_message.''; } if (isset ($info) && $info != null){ $r .= '
'.$info.'
'; } $r.= ''; return $r; } } ?> Pour afficher un SELECT je tape donc [code]<?php echo $form->input('mon_id','mon_nom', 'le_label', 'la_valeur', 'required', array('options' =>'ma_clef_de_tableau_$k')); /* * Erreur *Warning: Invalid argument supplied for foreach() in G:\wamp64\www\template\admin\helpers\form.php on line 69 */ ?> [/code] Il y à une erreur dans mon ecriture du tableau je devrai injecter trois valeur comme ceci [code]<?php echo $form->input('mon_id','mon_nom', 'le_label', 'la_valeur', 'required', array('options' =>'ma_clef_de_tableau_$k', 'je_sais_pas_comment faire_mon_$v')); /* * Pas d'ereur mais ça me génère un input de type TEXT. */ ?> [/code] Comment ecrire correctement mon array() ? PS : je viens de rendre compte que la fonction ne gère pas les OPTGROUP :(
j'ai lu la doc php et j'ai trouvé....
echo $form->input('','ref', 'Reference : ', ''.$prd->ref.'', 'required', array(
"options" => array(
"pays" => "TEST1",
"op" => "TEST2",
"opons" => "TEST3",)
));
salut,
pour optgroup, tu peux modifier la fonction de facon a reconnaitre le code suivant:
echo $form->input('','ref', 'Reference : ', ''.$prd->ref.'', 'required', array(
"options" => array(
"optgroup" => "Groupe1",
"1" => "TEST1-1",
"2" => "TEST1-2",
"3" => "TEST1-3",
"optgroup" => "Groupe2",
"4" => "TEST2-1",
"5" => "TEST2-2",
"6" => "TEST2-3")
));
ligne 29, tu rajoutes un test
if($k=='optgroup'){
//c'est un optgroup, mets le code qui va bien
}
eric