如何在不成功的验证时阻止codeigniter清除表单输入字段?

时间:2014-06-18 01:01:55

标签: php codeigniter validation

我在视图中有一个html表单,在其控制器中设置了验证规则,我遇到的问题是,当有人发送的数据无效时,我想维护客户端那些字段中的数据,如果我重新加载视图,字段被清除,我该如何维护数据中的字段?

4 个答案:

答案 0 :(得分:2)

假设您对输入字段进行了很长时间的编码:

<input type="text" name="quantity" value="" />

您可以使用Form Helperset_value()功能将值返回到输入。

<input type="text" name="quantity" value="<?php echo set_value('quantity');?>" />

对于<select>字段,复选框和单选按钮,有set_select()set_checkbox()set_radio()

答案 1 :(得分:1)

请阅读 CI Documentation

使用set_value()可以防止codeigniter在不成功验证时清除输入字段。

喜欢:

<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />

答案 2 :(得分:0)

有两种方法可以避免这种情况。

首先,您可以使用ajax提交而不是获取或发布提交。如果您成功提交ajax,那么您使用javascript提交表单!

另一种避免此方法的方法是将会议数据存储到会话中。如果有效失败,请将会话存储的数据重新输入到重新播放的视图中!

答案 3 :(得分:0)

如果您确实想在重新加载视图后保留这些值,则需要使用session user_data或将值存储在数据库中的某个位置。我不认为这就是你的意思,我认为你指的是提交后显示的数据(也就是$_POST数据)。

在您的视图中,您可以使用这样的三元运算符:

<input type="text" name="first_name" value="<?=isset($_POST['first_name'] ? $_POST['first_name'] : NULL ?>"/>

还有其他方法可以从您的控制器管理它。例如,您可以从控制器中定义变量$first_name,如下所示:

if(isset($_POST[]){
     //form_validation
     $vars['first_name'] = $this->input->post('first_name');
}else{
     $vars['first_name'] = NULL;
}
$this->load->view('your_view',$vars);

然后在您的视图中,您只需将输入值设置为$first_name