使用set_value填充codeigniter表单中的下拉列表

时间:2012-08-16 12:08:06

标签: codeigniter drop-down-menu validation setvalue

我有一个使用下拉列表并使用codeigniter,表单助手和表单验证的表单 因此,当我在表单中收到验证错误时,所有正确输入的字段都使用codeigniter的set_value填充,但这不适用于下拉列表

我正在做:

<?php echo form_dropdown('mid', $id_map, set_value('mid'), 'id="mid"') ?>

当表单中出现错误时,始终会选择下拉列表的第一个值,而不是先前设置的

任何想法,我做错了什么?

5 个答案:

答案 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);

就足够了。