2010-07-09 4 views
2

Je souhaite remplir à nouveau les valeurs affichées dans un champ de formulaire sélectionné après validation. Je connais le guide utilisateur de codeigniter proposé en utilisant la fonction set_select() mais leur exemple du guide suppose que vous avez codé en dur (en HTML) le tableau de valeurs pour l'élément de formulaire 'select'. Dans mon cas, je l'assistant Form et mes sélectionner des valeurs de champ sont tirées d'un tableau() comme ceci:Repopulation Sélectionnez les champs de formulaire dans CodeIgniter


$allstates = array('blah','blah2','blah3','blah4','blah5'); 
echo form_label('Select State Affiliate', 'state'); 
echo form_dropdown('state', $allstates); 

Inutile de dire, $ tableau Allstates est dynamique et change au fil du temps. Alors, comment puis-je coder de sorte que mon champ de sélection puisse être rempli avec la valeur que l'utilisateur a sélectionnée?

Répondre

4

Vous pouvez définir la valeur qui doit être présélectionnée via le troisième paramètre de form_dropdown. La valeur que l'utilisateur a sélectionnée à l'étape précédente est dans $ this-> input-> post ('state'). Donc, vous utilisez:

echo form_dropdown('state', $allstates, $this->input->post('state')); 

Depuis le mode d'emploi:

Le premier paramètre contiendra le nom du champ, le second paramètre contiendra un tableau associatif d'options, et le troisième paramètre contiennent la valeur que vous souhaitez sélectionner

$options = array(
       'small' => 'Small Shirt', 
       'med' => 'Medium Shirt', 
       'large' => 'Large Shirt', 
       'xlarge' => 'Extra Large Shirt', 
      ); 

$shirts_on_sale = array('small', 'large'); 

echo form_dropdown('shirts', $options, 'large'); 

// Would produce: 

<select name="shirts"> 
<option value="small">Small Shirt</option> 
<option value="med">Medium Shirt</option> 
<option value="large" selected="selected">Large Shirt</option> 
<option value="xlarge">Extra Large Shirt</option> 
</select> 
+0

Oups! Pourquoi n'ai-je pas pensé à ça? Utilisez simplement la fonction: $ this-> input-> post ('name_of_field')) pour sauvegarder la valeur du champ. Merci beaucoup l'homme! Travaillé parfaitement et j'aime cette solution parce qu'elle est simple et courte. – dtechplus

2

Parfois, surtout lorsque l'on travaille avec des objets, il pourrait être plus facile de le faire sans l'aide du formulaire :

<select name="my_select> 
    <?php foreach ($my_object_with_data as $row): ?> 
    <option value="" <?php if (isset($current_item->title) AND $row->title == $current_item->title) { echo 'selected="selected"';} ?> > 
     <?php echo $row->title; ?> 
    </option> 
    <?php endforeach; ?> 
</select> 

Je sais qu'il est très laid, mais dans beaucoup de cas, ce fut la meilleure façon de le faire lorsque vous travaillez avec des objets au lieu d'un tableau associatif.

+0

Ce type de code est meilleur dans le contrôleur que dans la vue. C'est un bon exemple pour utiliser l'assistant de formulaire pour créer vos listes déroulantes, c'est plus propre. – stef

+0

L'assistant de formulaire attend un tableau associatif, un objet provoquera des erreurs de conversion de chaîne. –

Questions connexes