我想在验证后重新填充(即重新填充)从选择表单字段发布的值。我知道使用set_select()函数提出的codeigniter用户指南,但是他们的指南中的示例假设您已经硬编码(在HTML中)'select'表单元素的值数组。在我的例子中,我使用了Form Helper,我的select字段值是从数组()中提取的,如下所示:
$allstates = array('blah','blah2','blah3','blah4','blah5');
echo form_label('Select State Affiliate', 'state');
echo form_dropdown('state', $allstates);
毋庸置疑,$ allstates数组是动态的,随着时间的推移而变化。那么我如何进行编码以便可以使用用户选择的值重新填充我的选择字段?
答案 0 :(得分:5)
您可以设置应通过form_dropdown的第三个参数预先选择的值。用户在上一步中选择的值在$ this-> input-> post('state')中。所以你会使用:
echo form_dropdown('state', $allstates, $this->input->post('state'));
来自用户指南:
第一个参数将包含字段的名称,第二个参数将包含一个关联的选项数组,第三个参数将包含您希望选择的值
$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>
答案 1 :(得分:2)
有时,特别是在处理对象时,如果没有表单助手,可能会更容易:
<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>
我知道它非常丑陋,但在很多情况下,这是使用对象而不是关联数组时最简单的方法。