重新验证验证后,在For循环中选择Multiple

时间:2014-07-16 14:21:11

标签: php codeigniter validation

所以基本上我在表格验证检查期间一直有很多麻烦重新填充我的选择框。下面我举了一个输出,控制器和视图的例子。请有人帮我解决这个问题。提前谢谢。

我有多个标签,如下所示:

    <select name="names[]" multiple>
            <option value="1">John Doe</option>
            <option value="2">Michael Scott</option>
            <option value="3">Luke Skywalker</option>
            <option value="4">Princess Arial</option>
    </select>

我的控制器验证检查:

    $this->form_validation->set_rules('name', 'Name', 'required');
    if ($this->form_validation->run() == FALSE){
        $this->reload_form_view();
    }

我的观点:

    <select name="names[]" multiple>
            <?php 
                foreach ($users as $user) {
                    $id = intval($user->id, 10);
                    $value = set_value('names[]', $id);
                    $name = $user->full_name;
                    echo '<option value="'.$value.'">'. $name .'</option>';
                }
            ?>
    </select>

当它返回false时我想用之前选择的选项重新填充选定的选项。我还使用数据库中的用户填充选择框。

有些人可以帮我解决我做错了什么,你会帮我这么多。先感谢您!!!!! :)

2 个答案:

答案 0 :(得分:1)

你可以尝试一下:

foreach ($users as $user) {
    $id     = intval($user->id, 10);
    $value  = set_value('names[]', $id);
    $name   = $user->full_name;
    echo '<option value="'.$id.'" '. set_select("names", $id ) .'>'. $name .'</option>';
}

这是通过使用set_select form helper提供的CI函数,您必须在使用之前加载表单助手。

答案 1 :(得分:0)

您可以添加支票:

echo '<option value="'.$value.'" '.(in_array($user->id,$this->input->post("names")) ? 'selected':'').'>'. $name .'</option>';

我还没有检查过in_array()是否适用于多个选择,但它是关于这个想法的。