2012-08-16 98 views
2

我有一个使用下拉列表的表单,并使用codeigniter,表单帮助程序和表单验证 因此,当我在表单中出现验证错误时,所有正确输入的字段都使用set_value填充笨的,但是,对于下拉这并不工作使用set_value在codeigniter表单中填充下拉列表

即时通讯做:

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

时出现错误的形式,总是下拉列表的第一个值被选中,而不是先前设定

任何我德斯,我做错了什么?

回答

13

正确的方法使用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> 

所以安德拉什拉茨方法/答案将无法正常工作。

你的方法是正确的。

<?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

+0

这是ppppperfect!赞扬,谢谢:) – 2012-08-16 13:30:25

+1

我很高兴它帮助! :) – TigerTiger 2012-08-16 13:31:00

+0

添加验证规则为我工作,谢谢! – themarkappleby 2013-03-06 21:54:31

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"'); ?> 

如果你有一个默认值,应该走在2。 set_select的参数。

我希望这会起作用。

+0

Ratz,仍然没有工作的朋友:(我试过你给的代码 – 2012-08-16 12:24:35

+0

试试这个新的 – ghostika 2012-08-16 13:20:46

+0

@AndrásRátz你的方法“'回声form_dropdown('mid',$ id_map,set_select('mid'),'id = “mid”');'“是错误的队友 - 看到我的回答低于 – TigerTiger 2012-08-16 13:26:35

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"'); 
        ?> 
0

怎么样,如果表格中选择内容从一个foreach循环选择这样

<?php foreach ($roles as $role) { 
     echo "<option value=" . $role->id . ">" . $role->role_name . "</option>"; 
         } 
     ?> 
-1

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

echo form_dropdown('mid',$id_map); 

就足够了。

+0

我不知道反对票是什么。这段代码昨天在其他方法失败之后使表单字段变得“粘性”。 – debucation 2017-04-29 13:47:09