我有一个使用下拉列表并使用codeigniter,表单助手和表单验证的表单 因此,当我在表单中收到验证错误时,所有正确输入的字段都使用codeigniter的set_value填充,但这不适用于下拉列表
我正在做:<?php echo form_dropdown('mid', $id_map, set_value('mid'), 'id="mid"') ?>
当表单中出现错误时,始终会选择下拉列表的第一个值,而不是先前设置的
任何想法,我做错了什么?
答案 0 :(得分:14)
使用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
设置验证规则
答案 1 :(得分:1)
这是因为你必须使用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 :(得分:0)
<?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"');
?>
答案 3 :(得分:0)
如果从像此
这样的foreach循环中选择表单选择内容,该怎么办?<?php foreach ($roles as $role) {
echo "<option value=" . $role->id . ">" . $role->role_name . "</option>";
}
?>
答案 4 :(得分:-1)
如果您没有关于实际下拉字段的验证规则,那么
echo form_dropdown('mid',$id_map);
就足够了。