我有一个使用下拉列表的表单,并且我使用 codeigniter、表单助手和表单验证,所以当我在表单中收到验证错误时,所有正确输入的字段都使用 codeigniter 的 set_value 填充,但是这不适用于下拉列表
我正在做 :
<?php echo form_dropdown('mid', $id_map, set_value('mid'), 'id="mid"') ?>
当表单出现错误时,始终选择下拉列表的第一个值并且之前未设置
任何想法,我做错了什么?
我有一个使用下拉列表的表单,并且我使用 codeigniter、表单助手和表单验证,所以当我在表单中收到验证错误时,所有正确输入的字段都使用 codeigniter 的 set_value 填充,但是这不适用于下拉列表
我正在做 :
<?php echo form_dropdown('mid', $id_map, set_value('mid'), 'id="mid"') ?>
当表单出现错误时,始终选择下拉列表的第一个值并且之前未设置
任何想法,我做错了什么?
正确的使用方法set_select()
是
<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>
所以 Andras Ratz 方法/答案不起作用。
你的方法是正确的。
<?php echo form_dropdown('mid', $id_map, set_value('mid'), 'id="mid"') ?>
但是请记住,set_value()
如果您为它设置了验证规则,那么只有在您的情况下才会返回该值mid
。您可以尝试如下 -
<?php echo form_dropdown('mid', $id_map, (isset($_POST['mid']) ? $_POST['mid'] : ''), 'id="mid"') ?>
mid
或者只是设置一个验证规则
这是因为您必须使用 set_select() 函数,而不是 set_value();
你可以在这里查看:http: //codeigniter.com/user_guide/helpers/form_helper.html
和正确的语法:
编辑 :
<?php echo form_dropdown('mid', $id_map, set_select('mid'), 'id="mid"'); ?>
如果你有一个默认值,那应该放在 set_select 的 2. 参数中。
我希望这会奏效。
<?php // Change the values in this array to populate your dropdown as required
$options = array(
'active' => 'Active',
'inactive' => 'Inactive',
);
echo form_dropdown('mid', $options,$id_map, ' id="mid"');
?>
如果表单选择内容是从这样的 foreach 循环中选择的呢?
<?php foreach ($roles as $role) {
echo "<option value=" . $role->id . ">" . $role->role_name . "</option>";
}
?>
如果您在实际下拉字段中没有验证规则,则
echo form_dropdown('mid',$id_map);
足够了。