2

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

我正在做 :

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

当表单出现错误时,始终选择下拉列表的第一个值并且之前未设置

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

4

5 回答 5

15

正确的使用方法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或者只是设置一个验证规则

于 2012-08-16T13:22:21.307 回答
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. 参数中。

我希望这会奏效。

于 2012-08-16T12:22:12.767 回答
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"');
                    ?>
于 2015-05-16T06:06:48.243 回答
0

如果表单选择内容是从这样的 foreach 循环中选择的呢?

<?php foreach ($roles as $role) {
        echo "<option value=" . $role->id . ">" . $role->role_name . "</option>";
                      }
      ?>
于 2016-03-01T19:20:24.660 回答
-2

如果您在实际下拉字段中没有验证规则,则

echo form_dropdown('mid',$id_map);

足够了。

于 2017-04-29T01:07:44.567 回答