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 :(

2 réponses


raficraft
Auteur
Réponse acceptée

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